无法使 SSH ProxyCommand 工作(ssh_exchange_identification:远程主机关闭连接)

无法使 SSH ProxyCommand 工作(ssh_exchange_identification:远程主机关闭连接)

我尝试使用 SSH ProxyCommand 通过跳转框连接到服务器,但没有成功。我的配置如下,我正在运行以下命令:

ssh 10.0.2.54 -F ssh.config

Host x.x.x.x
    User                   ec2-user
    HostName               x.x.x.x
    ProxyCommand           none
    IdentityFile           /Users/me/.ssh/keys.pem
    BatchMode              yes
    PasswordAuthentication no

Host *
    ServerAliveInterval    60
    TCPKeepAlive           yes
    ProxyCommand           ssh -W %h:%p -q [email protected]
    ControlMaster          auto
    ControlPersist         8h
    User                   ec2-user
    IdentityFile           /Users/me/.ssh/keys.pem

结果很简单:

ssh_exchange_identification: Connection closed by remote host

我怎样才能让它工作/解决问题?

谢谢,

答案1

ControlPersist结合使用ProxyCommand效果不佳,而且您错过了ControlPath选项。但在这里这不是问题。

首先,如果您使用的是非标准配置文件,并且希望代理命令也能使用它,则需要在那里指定它。该-q选项使连接安静,因此您不知道代理命令背后发生了什么。LogLevel DEBUG3选项非常有用。

这一行:

ProxyCommand           ssh -W %h:%p -q [email protected]

需要(并且您不需要用户名,因为它已经在上面指定了):

ProxyCommand           ssh -W %h:%p -F ssh.config x.x.x.x

您的命令中的参数顺序也错误:

ssh 10.0.2.54 -F ssh.config -vv

需要是:

ssh -F ssh.config 10.0.2.54

正如您在手册页中看到的。如果您使用选项,则-vv不需要。LogLevel

那么它应该对你有用(至少对我来说是这样,否则请调查日志)。

相关内容