Ssh
在單個命令中使用通過中間伺服器的隧道進行 ssh 登錄?
有沒有辦法在單個 SSH 命令中通過 SSH 登錄到通過中間伺服器的遠端伺服器?本質上,我需要創建一條到我的“橋接伺服器”的隧道,並通過隧道登錄到遠端伺服器。
例如,我正在嘗試將以下內容壓縮為單個 ssh 命令:
- ssh -N -L 2222:remoteserver.com:22 bridge_userid@bridgemachine.com
- ssh -p 2222 remote_userid@localhost
這目前有效,但我寧願能夠將所有內容壓縮到一個命令中,這樣如果我退出我的 ssh shell,我的隧道會同時關閉。
我在我的配置中嘗試了以下方法,但無濟於事:
Host axp User remote_userid HostName remoteserver.com IdentityFile ~/.ssh/id_rsa.eric ProxyCommand ssh -W %h:%p bridge_userid@bridgemachine.com
根據@jasonwryan 評論和transparent-mulihop 連結,我能夠使以下命令正常工作:
ssh -A -t bridge_userid@bridgemachine.com ssh -A remote_userid@remoteserver.com
但現在我想將它整齊地打包到我的 .ssh/config 文件中,並且不太確定我需要將什麼用作我的 ProxyCommand。我在網上看到了幾個連結以及@boomshadow 的需要的答案
nc
,但不幸的是,我用作橋接機器的 AIX 伺服器上沒有安裝 netcat。
ProxyCommand 是您所需要的。在我的公司,所有 DevOps 技術人員都必須使用“跳轉站”才能訪問 VPC 的其餘部分。jumpstation 是受 VPN 訪問控制的。
我們已經將 SSH 配置設置為自動通過 jumpstation。
這是我的 .ssh/config 文件的編輯版本:
Host *.internal.company.com User jacob IdentityFile ~/.ssh/id_rsa ProxyCommand ssh -q -A jacob@company-internal-jumphost nc -q0 %h %p
每次我對該“內部”子域上的伺服器執行“ssh”時,它都會首先自動跳過跳轉站。
編輯:這是“內部”VPC 的 .ssh/config 的整個部分,供我們登錄:
# Internal VPC Host company-internal-jumphost Hostname 10.210.x.x #(edited out IP for security) IdentityFile ~/.ssh/id_rsa Host 10.210.* User ubuntu IdentityFile ~/.ssh/company-id_rsa ProxyCommand ssh -q -A jacob@company-internal-jumphost nc -q0 %h %p Host *.internal.company.com User jacob IdentityFile ~/.ssh/id_rsa ProxyCommand ssh -q -A jacob@company-internal-jumphost nc -q0 %h %p