我透過以下方式連接到 server2:
home$ ssh server1
server1$ ssh server2
server2$
我有時也需要以這種方式進行 scp,這需要一些額外的時間:
home$ ssh server1
server1$ scp server2:file .
server1$ exit
home$ scp server1:file .
有沒有辦法從家裡用一個指令來做到這一點?我正在使用公鑰身份驗證,但如果它也適用於密碼,那就太好了。
答案1
我建議使用 MobaXterm:你只需要
- 從這裡下載:http://mobaxterm.mobatek.net/download-home-edition.html
- 點擊“新會話”並選擇“ssh”
- 在「遠端主機名稱」欄位中指定您的「server2」電腦名稱或 IP 位址
- 在「SSH 反彈(透過網關 ssh 伺服器連線)」欄位中指定您的「server1」電腦名稱或 IP 位址
這將直接啟動一個新的 SSH 命令到您的「server2」電腦。在視窗左側,您還可以存取圖形 SFTP 檔案傳輸工具,該工具也將直接連接到「server2」。
答案2
您可以使用 SSH 隧道,如下所示:
ssh -f server1 -L 8888:server2:22 -N
這將在本機電腦上的連接埠 8888(假設沒有其他進程正在使用該連接埠)上開啟一個套接字,該套接字透過 server1 將連線建立到 server2(假設 SSH 正在連接埠 22 上執行)。-N
和標誌-f
告訴 SSH 分叉到後台(如果你想停止隧道,你必須終止該進程)。
現在你可以透過以下方式從 server2 取得 scp 文件
scp -P 8888 localhost:file
答案3
home$ server1 "ssh server2"
但當涉及更多伺服器時,轉義命令字串將會很痛苦。
答案4
將 SOCKS5 與動態隧道結合使用
建立到第一台機器的動態 ssh 隧道。然後,使用第一個連線作為 SOCKS5 代理程式來存取遠端網路上的第二個主機。
這很容易透過 putty 設定。您可以根據需要重複使用代理多次。有些程式直接支援SOCKS5。就像膩子和 ssh 一樣。
在 Linux 下,代理鏈可用於代理本身不支援 SOCKS5 的程式。在Windows下,我喜歡Proxycap。它與 RDP 配合良好。
要使用 Putty 進行設定:
在第一個主機設定頁面的隧道下:
- 建立動態隧道
- 將連接埠設定為 9050。
- 將目標部分留空,因為它是動態的。
- 儲存您的設定。 (從會話頁面完成。)
然後,在第二個主機的配置中,在代理下:
- 選擇 SOCK55。
- 將代理主機名稱更改為 127.0.0.1
- 將連接埠設定為9050
- 然後正常設定剩餘的會話
- 儲存您的設定
連接到第二台主機。您必須先連線並登入第一台主機。然後您應該能夠透過代理 ssh 連線連接到第二台主機,
您也可以使用 ssh_config 條目從命令列執行此操作: http://www.undeadly.org/cgi?action=article&sid=20070925181947