通過 SSH 跳過中間伺服器
我剛受僱在一個擁有大型 ‘ol linux 集群的實驗室工作。我是一個 mac/windows 人,所以我仍在試圖弄清楚如何使用’nix 命令行進行導航。到目前為止,我還沒有遇到任何實際問題,但是我遇到了大約 5000 種與學習新系統相關的小煩人的事情。
到目前為止,最大的煩惱是:無論出於何種原因(安全性,關於這些伺服器的設置方式,我還不太了解,等等),當從校外通過 SSH 登錄到集群時,你首先有通過 SSH 連接到實驗室辦公桌上的舊 imac,然後從那里通過 SSH 連接到集群。我一直在使用 SCP 命令將文件從我的家庭 mac 複製到集群:
在一個終端視窗中的第一個:
my-home-mac:scp file userA@XXX.XXX.XXX.XXX:~/target
然後在另一個終端視窗中(我登錄到實驗室 imac):
lab-imac:scp file userB@YYY.YYY.YYY.YYY:~/target
問題是每次我這樣做時,我都被迫首先將文件SCP到實驗室imac(並輸入一個密碼),然後將文件從那裡SCP到集群(並輸入另一個密碼)。我正在嘗試幫助開發這個分成 4 打文件的 C 程序,所以我要移動很多文件,這讓我發瘋。
我想我將不得不學習 shell 腳本,但與此同時,為了啟動和執行,我有幾個問題:
- 如何在我的家庭 Mac 上設置終端,這樣我就不必總是輸入實驗室 imac 或集群的密碼?
- 有什麼方法可以直接從我的家庭 Mac 到集群的 SCP(或其他命令)文件,而不需要經過中間程序?
- 有什麼方法可以在我的家庭 Mac 上設置 Fugu(或任何其他帶有 gui 的 SSH 客戶端),這樣它就可以考慮到中間伺服器(實驗室 imac),就像它直接將我連接到群?
我是物理學家,實驗室裡的其他人都是生物學家,設置所有這些東西的人早已不在,所以我正在聯繫你們,你們所有人都在精彩的堆棧溢出社區中,幫我一把。謝謝。
在 SSH 中,您可以使用 Host 和 ProxyCommand 條目配置要自動跳轉到的中間節點,請參閱此
無需輸入密碼,請查看此連結
您可以設置密鑰以避免輸入密碼。我確定之前已經在這裡介紹過(請參閱如何使用遠端機器上的 SSH 公鑰?;提示
ssh-keygen
),並且我總是使用 OpenSSH 命令行客戶端(在我的 Mac 上安裝fink,帶有本地包管理器在 linux 上),所以我不會處理愚蠢的準圖形客戶端。
ssh
轉發或scp
通過網關的配方您的原始機器(我將其稱為 orig)上需要兩個命令行。網關稱為gate,目的地dest。
第一個命令行:
orig$ ssh -L 1111:dest.tld:22 gate.tld
這通過通過gate的 ssh 隧道將在****orig 上傳出的埠 1111 連結到在dest上傳入的埠 22 。
現在,如果您需要此轉發一段時間,請將其設置為執行不會讓會話超時的操作。我用
top
.第二個命令行:
orig$ ssh -p 1111 username_on_dest@localhost
要麼
orig$ scp -P 1111 path/to/file/on/orig/filename username_on_dest@localhost:path/on/dest/new_filename
(請注意,埠指定選項採用不同的大寫形式
ssh
和scp
…arghhh!)閱讀文件以了解您可以使用的各種方法,但這是基本方案。如果您經常使用出於安全原因而遠離公共網路的資源,這將非常有用。