Это не совсем то, о чем вы просите, но есть некоторые трюки, которые вы можете играть с прокси-сервером SSH, которые упрощают этот вид вещь чрезвычайно. Первое, что нужно знать, - это прокси-соединение через SSH через netcat. Если у вас есть OpenSSH версии 5.4 или более поздней версии на различных хостах, добавить что-то вроде этого в ваш ~/.ssh/конфигурации:
Host B
ProxyCommand ssh A -W %h:%p
Host C
ProxyCommand ssh B -W %h:%p
Host D
ProxyCommand ssh D -W %h:%p
Если какой-либо из промежуточных не имеют достаточно новую версию, но есть Netcat (nc
), вы можете использовать что-то вроде этого, вместо:
Host D
ProxyCommand ssh C nc %h %p
Это сделает ssh D
автоматически открыть туннель C, чтобы запустить соединение через, который будет автоматически открыть туннель B, ... вы вам нужно пройти аутентификацию 4 раза (до A, затем B и т. д.) (если у вас нет аутентификации с открытым ключом), но кроме этого она прозрачна. Это означает, что вы можете использовать его с sftp D
, scp D:/path/to/file
и т. Д.
Теперь у вас есть одно существенное ограничение по тому, что вы описываете. Вы можете, конечно, копировать файлы, например. А D, как это:
scp A:/path/to/file D:/path/to/file
... но содержимое файла будет путешествовать по пути А -> компьютер -> A -> B -> C -> D. Они не будут храниться в любом месте этот путь, но если сетевая связь между вами и A медленная (например, вы работаете из дома), это будет узким местом. В этом случае было бы лучше всего скопировать записи ~/.ssh/config для C и D на компьютер A, ssh в A нормально, затем использовать scp /path/to/file D:/path/to/file
и вырезать дополнительные перелеты.
Кстати, если вы хотите получить фантазии, вы можете добавить это в ~/.ssh/конфигурации:
Host */*
ProxyCommand ssh $(dirname %h) -W $(basename %h):%p
И затем использовать ssh A/B/C/D
и т.д., чтобы построили туннель пути на месте. См. the OpenSSH cookbook.
К сожалению, я думаю, что у вас есть свои возможности.Не уверен в том, что проще, чем использовать внешнее местоположение, доступное для обеих машин. Я сталкиваюсь с этим все время и в конечном итоге делаю несколько туннелей. –