Linux

通過 SSH 跳過中間伺服器

  • November 18, 2012

我剛受僱在一個擁有大型 ‘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 腳本,但與此同時,為了啟動和執行,我有幾個問題:

  1. 如何在我的家庭 Mac 上設置終端,這樣我就不必總是輸入實驗室 imac 或集群的密碼?
  2. 有什麼方法可以直接從我的家庭 Mac 到集群的 SCP(或其他命令)文件,而不需要經過中間程序?
  3. 有什麼方法可以在我的家庭 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

(請注意,埠指定選項採用不同的大寫形式sshscp…arghhh!)閱讀文件以了解您可以使用的各種方法,但這是基本方案。如果您經常使用出於安全原因而遠離公共網路的資源,這將非常有用。

引用自:https://serverfault.com/questions/184853