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

时间:2016-01-28 11:45:51

标签: ssh ssh-keys openssh

我尝试使用SSH ProxyCommand通过跳转框连接服务器失败了。我的配置如下,我正在运行此命令:

ssh 10.0.2.54 -F ssh.config -vv

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 ec2-user@x.x.x.x
    ControlMaster          auto
    ControlPersist         8h
    User                   ec2-user
    IdentityFile           /Users/me/.ssh/keys.pem

结果是:

OpenSSH_6.2p2, OSSLShim 0.9.8r 8 Dec 2011
debug1: Reading configuration data ssh.config
debug1: ssh.config line 9: Applying options for *
debug1: auto-mux: Trying existing master
debug1: Control socket "/Users/me/.ssh/mux-ec2-user@10.0.2.54:22" does not exist
debug2: ssh_connect: needpriv 0
debug1: Executing proxy command: exec ssh -W 10.0.2.54:22 -q ec2-user@x.x.x.x
debug1: identity file /Users/me/.ssh/keys.pem type -1
debug1: identity file /Users/me/.ssh/keys.pem-cert type -1
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_6.2
debug1: permanently_drop_suid: 501

如何让这个工作/解决问题?

谢谢,

1 个答案:

答案 0 :(得分:2)

ControlPersistProxyCommand结合使用效果不佳,您会错过ControlPath选项。但这不是问题。

首先,如果您使用的是非标准配置文件,并且您希望甚至通过proxy命令使用它,则需要在此处指定它。 -q选项使连接安静,因此您不知道在proxy命令的引擎下发生了什么。 LogLevel DEBUG3选项非常有用。

这一行:

ProxyCommand           ssh -W %h:%p -q ec2-user@x.x.x.x

需要(并且您不需要上面已经指定的用户名):

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

然后它应该适合你(至少它对我有用,否则调查日志)。