Как синхронизировать, когда вы не можете подключиться напрямую к удаленному компьютеру

У меня есть домашний компьютер A и рабочий компьютер C, которые я хочу синхронизировать с помощью unison. В середине находится рабочий компьютер B. A может взаимодействовать с B, а B может напрямую взаимодействовать с C, но A и C не могут напрямую соединяться друг с другом. На самом деле схема связи выглядит как A-> B<->C. То есть A может подключаться к B, но B не может подключаться к A.

Чтобы дать пример того, как я использую эту настройку, я в настоящее время делаю следующее, если я хочу ssh от A до C

ssh -t -X -C me_B @ B ssh -X me_C @ C

Как мне запустить unison из A и синхронизировать с C, возможно, используя переадресацию портов ssh?

Чтобы было немного понятнее, C имеет нефильтрованную исходящую связь с Интернетом. В нефильтровано входящее и исходящее соединение как с С, так и с Интернетом. А мой домашний компьютер.


Обновить

Следующая командная строка работает для меня, чтобы по крайней мере скопировать файлы из А в С

scp -oProxyCommand="ssh me_B@B nc -v %h %p" foo/* me_C@C:foo

Есть ли способ использовать эту идею, чтобы заставить унисон работать?

1 ответ

Решение

Да, для этого можно использовать переадресацию порта ssh. Используйте следующую команду для A, если вы хотите переслать ssh через порт 22 в C на локальный порт 3000 (например):

# Create the tunnel
ssh -L 3000:C:22 userB@B -N

После того, как вы ввели команду, вы можете войти в C из A, используя:

# Connect using the tunnel
ssh -p 3000 userC@localhost

Примечание. В ходе обсуждения ниже выяснилось, что в сети OP соединение через туннель может быть установлено только с помощью следующей команды:

ssh -p 3000 -l userC localhost

Обратите внимание, что я использую -l userC вместо userC@,


Теперь вы можете использовать unison как это:

unison directory ssh://userC@localhost:3000 directory
Другие вопросы по тегам