Как синхронизировать, когда вы не можете подключиться напрямую к удаленному компьютеру
У меня есть домашний компьютер 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