嘿,我在 Windows 10 上使用 bash,尝试快速轻松地通过 SSH 连接到我在 Amazon Web Services 上的 Ubuntu 服务器。据我所知,一切都设置正确,但当我进入 ssh 时
$ ssh -vvv -i key.rsa [email protected]
我明白了
OpenSSH_6.6.1, OpenSSL 1.0.1f 6 Jan 2014
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug2: ssh_connect: needpriv 0
debug1: Connecting to 123.456.789.123 [123.456.789.123] port 22.
debug1: connect to address 123.456.789.123 port 22: Resource temporarily unavailable
ssh: connect to host 123.456.789.123 port 22: Resource temporarily unavailable
通过 Putty 连接正常。发生了什么?
编辑:我又进一步将此行添加到 /etc/ssh/ssh_config 的末尾:
ProxyCommand nc %h %p %r
但现在我遇到了一个新问题:
$ ssh -vvv -i id_rsa 123.456.789.123
OpenSSH_6.6.1, OpenSSL 1.0.1f 6 Jan 2014
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug1: Executing proxy command: exec nc 123.456.789.123 22 User
debug1: permanently_drop_suid: 1000
debug3: Incorrect RSA1 identifier
debug3: Could not load "id_rsa" as a RSA1 public key
debug1: identity file id_rsa type 1
debug1: identity file id_rsa-cert type -1
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_6.6.1p1 Ubuntu-2ubuntu2.8
nc: getaddrinfo: Servname not supported for ai_socktype
ssh_exchange_identification: Connection closed by remote host
这个完全相同的命令和完全相同的密钥在我的服务器上运行(通过 ssh 进入其自身)。
$ ssh-keygen -l -f id_rsa
确认它是相同的有效密钥。Putty 仍然有效,所以这不是我的 AWS 端口设置。当我尝试从 WinBash 连接时,服务器日志中没有 SSH 条目,但(当然)当我的服务器通过 SSH 连接到自身时会出现一个条目,所以我猜这是我的客户端设置出了问题,但是什么呢?
答案1
您的代理命令应该是:
ProxyCommand nc %h %p
nc 不需要您的 ssh 用户名,只需省略它。
如果您将用户名 (%r) 作为第三个参数传递给 nc,nc 会将其视为符号端口(服务)标识符并尝试将其转换为端口号,但实际上它做不到。这就是您收到的错误“Servname 不支持 ai_socktype”(此处的 Servname 实际上是您的用户名)。
[编辑] 嗯,话虽如此,我认为您的 ProxyCommand 不会有帮助。回到第一个错误,我相信您受到系统的限制,不知何故,系统阻止您的程序(无论是 ssh 还是 nc)与该服务器/端口建立网络连接。这可能不是防火墙问题,而是 ssh 和/或 Cygwin 的系统限制。抱歉,我不了解 Windows,无法提供进一步的帮助。
答案2
据我所知,在 AWS 上创建新实例时,您应该有 .ppk。如果您有自己生成的 .ppk 文件。
打开 Putty 会话并转到连接部分并选择 SSH 部分下的身份验证部分。
最后,浏览 .ppk 并加载它,然后打开会话。重要的一点是,在上述过程之前,您应该在 Sessions 选项卡中设置主机名和端口。