windows 请调试SSH Proxy命令,它无法通过PuTTY上的多跳SSH连接远程服务器

xuo3flqw  于 2023-01-21  发布在  Windows
关注(0)|答案(4)|浏览(246)

我想从一个工作的Mac设置复制以下~/.ssh/config到一个Windows腻子。

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计算机上的remote Atom文本编辑器在远程计算机上工作。多跳意味着我必须首先SSH到中间计算机,然后登录到最终计算机。
在Mac上,我只需启动Atom远程包上的服务器,在终端上运行ssh server02,输入两个登录密码以进入远程计算机,然后运行rmate filename,让远程文件自动显示在Mac Atom编辑器上。
目前我正在尝试复制我的Windows PuTTY上的所有内容。我遵循this multihop on SSH tutorial并参考plink manual
首先,我将“C:\Program Files(x86)\PuTTY”永久添加到PATH中,然后对PuTTY进行以下设置,尝试完全复制~/.ssh/config:

*会话。主机名:work-machine-name,端口:22
*连接-〉数据.自动登录用户名:username
*连接-〉代理.代理类型:Local,代理主机名:11.22.333.444,端口:55555、Telnet命令或本地代理命令:plink -ssh 11.22.333.444 -P 55555 -l username -D 1080 -R 52698:127.0.0.1:52698 -nc %host:%port
*连接-〉SSH -〉隧道。远程端口转发窗口显示:x1米11米1x
尝试运行所有程序时出现大的空白黑屏。我怀疑ProxyCommand设置不正确。

(Btw通过我的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上,它也会要求输入第二个密码,然后连接到远程工作机器。

jogvjijk

jogvjijk1#

看起来您所面临的问题是“标准”ssh工具和putty之间的不兼容性
一些可能的解决方法是使用cygwinssh、linux subsystem for windowsmobaxterm(基本上是cygwin +一个更好的终端仿真器和嵌入式x11服务器)
所有这些都使用与linux和mac相同的配置文件格式,因此您现有的配置应该可以正常工作

yzuktlbb

yzuktlbb2#

这是一对夫妇的想法,你的用例是非常特殊的,可能是更好的工具来实现你所需要的,以简化所有的代理,你可能会使用你的设备之间的VPN,但专注于SSH端,我建议检查如何转发正在进行,以及如何测试(堡垒)设置使用腻子.

转发

可能发生的情况是,在您的Windows客户端中,ssh密码没有被转发,这在这样做时是有效的:

ssh -A

从男人那里:
-A启用身份验证代理连接的转发。这也可以在配置文件中基于每个主机指定。
在Windows中,当使用putty来实现类似的功能时,您需要使用Pageant
Pageant是一个PuTTY身份验证代理。它将您的私钥保存在内存中,以便您在连接到服务器时可以使用它们。它消除了以下需要:

  • 如果使用多个帐户登录到服务器,请为每个Linux用户帐户显式指定相关密钥
  • 每次登录用户帐户时键入密钥的密码;而且你的键应该是密码保护的,因为有一个不受保护的键就像把你的密码藏在你的键盘下面一样好!

要了解有关如何配置客户端的详细信息,请遵循以下指南:https://www.digitalocean.com/community/tutorials/how-to-use-pageant-to-streamline-ssh-key-authentication-with-putty

堡垒- ssh隧道

检查此指南https://blog.devolutions.net/2017/04/how-to-configure-an-ssh-tunnel-on-putty.html

tez616oj

tez616oj3#

我只是有一个类似的需求,但我的中间服务器不允许netcat。我想出的解决方案是使用-W标志的ssh(我使用OpenSSH),它可以用一个类似的ssh配置,你已经在mac上使用。
在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"
我希望它能在未来帮助到一些人。

klh5stk1

klh5stk14#

假设我们希望通过8.8.8.8ssh发送到172.16.0.21
两台主机中的登录名均为john
私钥路径为C:\users\john\.ssh\private.ppk

第一节第一节第一节第二节第一节

plink.exe -v -ssh %user@%proxyhost -P %proxyport -nc %host:%port   -i "c:\Users\john\.ssh\private.ppk"

相关问题