這不是你要的東西,但有一些技巧,你可以使用SSH代理來簡化這種事情極大。首先要熟悉的是通過netcat代理多跳SSH連接。如果您有關於的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
等
現在,這對你所描述的有一個顯着的限制。你當然可以從例如A到d這樣的:
scp A:/path/to/file D:/path/to/file
...但該文件的內容將前往路徑A - >計算機 - > A - >乙 - >ç - > D.他們不會在任何地方存儲那個路徑,但是如果你和A之間的網絡連接很慢(例如你在家工作),這將是一個瓶頸。在這種情況下,最好將C和D的〜/ .ssh/config項複製到計算機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。
不幸的是我認爲你有唯一的選擇。不確定任何更簡單的方法,然後使用兩臺機器都可以訪問的外部位置。我一直遇到這個問題,最終做了多個隧道。 –