![](/img/trans.png)
[英]Cannot connect to remote server using VS Code - remote SSH extension
[英]Please debug SSH Proxy Command, it cannot connect remote server with multihop SSH on PuTTY
我想將以下~/.ssh/config
從工作的 Mac 設置復制到 Windows PuTTY。
Host server01
HostName 11.22.333.444
Port 55555
DynamicForward 1080
User username
RemoteForward 52698 localhost:52698
Host server02
HostName work-machine-name
ProxyCommand ssh -q server01 nc work-machine-name 22
User username
RemoteForward 52698 localhost:52698
這是我覺得在 PuTTY 上不正確的當前代理命令:
plink -ssh 11.22.333.444 -P 55555 -l username -D 1080 -R 52698:127.0.0.1:52698 -nc %host:%port
細節:
我正在嘗試使用 SSH 代理在 PuTTY 上設置多跳,以便我可以在我的 Windows 計算機上使用遠程 Atom文本編輯器在遠程機器上工作。 Multihop 意味着首先我必須 SSH 進入中間機器,然后登錄到最終機器。
在 Mac 上,我只是在 Atom 遠程 package 上啟動服務器,在終端上運行ssh server02
,輸入兩個登錄名的密碼以進入遠程機器,然后運行rmate filename
使遠程文件自動顯示在 Mac Atom 編輯器上這個室友。
目前我正在嘗試在我的 Windows PuTTY 上復制所有內容。 我遵循了 SSH 教程中的這個 multihop並參考了plink 手冊。
首先,我將“C:\Program Files (x86)\PuTTY”永久添加到 PATH。 然后我對 PuTTY 進行了以下設置,試圖准確復制 ~/.ssh/config:
work-machine-name
,端口: 22
username
Local
,代理主機名: 11.22.333.444
,端口: 55555
,Te.net 命令或本地代理命令: plink -ssh 11.22.333.444 -P 55555 -l username -D 1080 -R 52698:127.0.0.1:52698 -nc %host:%port
R52698 localhost:52698
當我嘗試運行所有程序時,我得到一個空白的大黑屏。 我懷疑我的 ProxyCommand 設置不正確。
(順便說一句,通過我的 Mac 設置,我發現 X11 是完全不必要的。)
為了調試,我在 cmd 提示符下運行了 ProxyCommand plink 行:
C:\Users\username>plink -ssh 11.22.333.444 -P 55555 -l username -D 1080 -R 52698:127.0.0.1:52698 -nc work-machine-name:22
username@11.22.333.444's password:
SSH-2.0-OpenSSH_6.6.1
輸入密碼后它掛在那里。 在 Mac 上,它也會要求輸入第二個密碼,然后連接到遠程工作機器。
您面臨的問題似乎是“標准”ssh 工具和膩子之間的不兼容
一些可能的解決方法是使用cygwin ssh、 用於 windows 的 linux 子系統或mobaxterm (基本上是 cygwin + 更好的終端模擬器和嵌入式 x11 服務器)
它們都使用與 linux 和 mac 相同的配置文件格式,因此您現有的配置應該可以工作
這些是一些想法,您的用例非常特殊,可能是實現您需要的更好的工具,為了簡化您可能在設備之間使用 VPN 的所有代理,但要專注於 SSH 端,我建議檢查如何完成轉發以及如何使用膩子測試(堡壘)設置。
可能發生的情況是,在您的 Windows 客戶端中,未轉發 ssh 密碼,這在執行以下操作時有效:
ssh -A
來自男人:
-A 啟用身份驗證代理連接的轉發。 這也可以在配置文件中針對每個主機進行指定。
在 Windows 中使用膩子來實現類似的東西時,您需要使用調用Pageant
東西。
Pageant 是 PuTTY 身份驗證代理。 它將您的私鑰保存在內存中,以便您在連接到服務器時都可以使用它們。 它消除了以下需要:
顯式指定每個 Linux 用戶帳戶的相關密鑰,如果您使用多個帳戶登錄服務器
每次登錄用戶帳戶時輸入密鑰的密碼; 並且您的密鑰應該受密碼保護,因為擁有未受保護的密鑰與將密碼隱藏在鍵盤下一樣好!
要了解有關如何配置客戶端的更多信息,請遵循本指南: https : //www.digitalocean.com/community/tutorials/how-to-use-pageant-to-streamline-ssh-key-authentication-with-putty
檢查本指南, https://blog.devolutions.net/2017/04/how-to-configure-an-ssh-tunnel-on-putty.html
我只是有類似的需求,但我的中間服務器不允許 netcat。 我想出的解決方案是對 ssh 使用-W
標志(我使用的是 OpenSSH),並且可以使用與您已經在 mac 上使用的配置類似的 ssh 配置來完成。
Windows 上 ssh 配置的默認位置是 - C:\\Users\\$username$\\.ssh\\config
。
Host server01
HostName 11.22.333.444
Port 55555
User username
Host server02
HostName work-machine-name
ProxyCommand C:\Windows\System32\OpenSSH\ssh.exe -W %h:%p server01
User username
關於配置的兩個注意事項:
ProxyCommand
可能很難找到 ssh.exe,因此這里最好使用絕對路徑。 如果您更喜歡避免使用ssh_config
並使用命令行來執行此操作,則可能需要使用:
ssh -t username@11.22.33.4444 "ssh -t username@work-machine-name"
我希望它會在將來對某人有所幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.