建立 ssh 隧道來傳輸檔案?

建立 ssh 隧道來傳輸檔案?

對我來說,網路是一個非常「不透明」的東西,即使閱讀了大量有關 SSH 的教程,我也不明白如何創建一個基本的隧道來傳輸我的文件。

配置如下:

My Computer --[Internet]--> Bridge Machine --[Local Network]--> Final Machine

目前我執行以下操作:

1) Connect to the Bridge Machine with :
ssh -X [email protected]

2) Connect to the Final Machine with :
ssh -X username@finalmachine

3) I copy the address of files I need (for example .../mydirectory)

4) Then I deconnect from the finalmachine with :
exit

5) I copy the files to the bridge :
scp -r username@finalmachine:/.../mydirectory .

6) I deconnect from the bridge with :
exit

7) I copy the files to my machine :
scp -r [email protected]:/.../mydirectory .

這是相當複雜的。我的問題很基本:如何使用 SSH 隧道來簡化這個過程?

(請解釋一下您編寫的每個命令行的含義,以了解每行的真正作用,並避免像神奇的東西一樣使用它。此外,如果使用了某些端口號,請解釋一下我是否可以選擇一個完全隨機的數字或如果我必須選擇一個特定的。

答案1

設定 ssh 設定檔:

~/.ssh/config

該文件將在許多方面提供幫助,但最終將允許您一步完成所有這些。

首先為每台機器設定別名

Host bridge
User username

Host final
User username

現在您可以使用「ssh -Xbridge」連接第一台機器。

對於下一步,您需要在每台電腦上使用 netcat(嘗試「which nc」)進行檢查。然後,將 ProxyCommand 與您的「最終」機器配置結合使用,使其顯示為:

Host final
User username
ProxyCommand ssh -CAYq bridge exec nc %h %p

此命令透過中央電腦將您想要的任何內容傳送到連接埠 %p 上的主機 %h(這表示如果您想透過不同連接埠傳送其他應用程式數據,則可以 - 只要此連線開啟)

如果您設定了金鑰,也不會出現密碼提示,如果沒有:系統會提示您輸入橋接的第一個密碼,然後是最後一個密碼。

現在「ssh Final」應該可以工作,以及:

scp -r final:/.../directory .

相關內容