Ubuntu Linux中到Amazon EC2的SSH连接

Ubuntu Linux中到Amazon EC2的SSH连接,ubuntu,amazon-ec2,openssh,Ubuntu,Amazon Ec2,Openssh,我正在尝试使用以下命令从shell ssh到amazonec2实例 ssh -vi sec.ppk ubuntu@ec2-xx.compute-1.amazonaws.com 但是连接失败 下面是由上述命令生成的调试输出 OpenSSH_5.3p1 Debian-3ubuntu7, OpenSSL 0.9.8k 25 Mar 2009 debug1: Reading configuration data /etc/ssh/ssh_config debug1: Applying options

我正在尝试使用以下命令从shell ssh到amazonec2实例

ssh -vi sec.ppk ubuntu@ec2-xx.compute-1.amazonaws.com
但是连接失败

下面是由上述命令生成的调试输出

OpenSSH_5.3p1 Debian-3ubuntu7, OpenSSL 0.9.8k 25 Mar 2009
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: Applying options for *
debug1: Connecting to ec2-xx.compute-1.amazonaws.com port 22.
debug1: Connection established.
debug1: identity file security1.ppk type -1
debug1: Remote protocol version 2.0, remote software version OpenSSH_5.5p1 Debian-4ubuntu5
debug1: match: OpenSSH_5.5p1 Debian-4ubuntu5 pat OpenSSH*
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_5.3p1 Debian-3ubuntu7
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: server->client aes128-ctr hmac-md5 none
debug1: kex: client->server aes128-ctr hmac-md5 none
debug1: SSH2_MSG_KEX_DH_GEX_REQUEST(1024<1024<8192) sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_GROUP
debug1: SSH2_MSG_KEX_DH_GEX_INIT sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_REPLY
debug1: Host 'ec2-xx.compute-1.amazonaws.com' is known and matches the RSA host key.
debug1: Found key in /home/ma/.ssh/known_hosts:9
debug1: ssh_rsa_verify: signature correct
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey
debug1: Next authentication method: publickey
debug1: Trying private key: sec.ppk
debug1: PEM_read_PrivateKey failed
debug1: read PEM private key done: type <unknown>
Enter passphrase for key 'sec.ppk': 
OpenSSH_5.3p1 Debian-3ubuntu7,OpenSSL 0.9.8k 2009年3月25日
debug1:读取配置数据/etc/ssh/ssh\u config
debug1:将选项应用于*
debug1:连接到ec2-xx.compute-1.amazonaws.com端口22。
debug1:已建立连接。
debug1:标识文件security1.ppk类型-1
debug1:远程协议版本2.0,远程软件版本OpenSSH_5.5p1 Debian-4ubuntu5
debug1:match:OpenSSH_5.5p1 Debian-4ubuntu5 pat OpenSSH*
debug1:启用协议2.0的兼容模式
debug1:本地版本字符串SSH-2.0-OpenSSH_5.3p1 Debian-3ubuntu7
debug1:SSH2\u MSG\u KEXINIT已发送
debug1:SSH2\u MSG\u KEXINIT已收到
debug1:kex:server->client aes128 ctr hmac-md5无
debug1:kex:客户端->服务器aes128 ctr hmac-md5无

debug1:SSH2_MSG_KEX_DH_GEX_请求(1024听起来像是您用密码短语创建了私钥。您是如何创建密钥对的?您在创建私钥时是否输入了密码短语

您需要输入在创建密钥时提供的密码短语。以及

debug1: read PEM private key done: type <unknown>
debug1:读取PEM私钥完成:类型
这表明,您的密钥没有被重新编码。理想情况下,您会得到一个类似RSA的方法名

进一步检查您是否在某处有像id_rsa.pub这样的公钥,如果有,请尝试使用它,以防您不记得您的密码短语

编辑:

好的,我猜您正在使用亚马逊的ppk。要使用EC2-priv.ppk密钥,您必须将其转换为OpenSSH可以理解的格式。您可以使用PuttyGen程序执行此操作。这将为您创建一个.pub文件,然后您可以使用该文件进行连接。

尝试使用

ssh -i /directory/keyname.pem ubuntu@ec2-xx.compute-1.amazonaws.com

其中.pem是您在设置实例时创建的密钥对文件。

适用于AWS新手。
.ppk
扩展名与openSSH不兼容,因此仅适用于FileZilla/Putty

在这种情况下,最简单的方法是安装putty并使用putty工具将
.ppk
转换为
.pem

sudo apt-get install putty
puttygen <path_to_key>/keyname.ppk -O private-openssh -o aws_key.pem
ssh -vi aws_key.pem ubuntu@<ip_address>
sudo-apt-get-install-putty
puttygen/keyname.ppk-O私有openssh-O aws_key.pem
ssh-vi aws_key.pem ubuntu@

希望这有助于快速解决问题。

因为
sec.ppk
是用密码短语加密的。您尝试过输入它吗?但我使用FileZilla成功地建立了连接,并且使用了相同的密钥,具有相同的上述凭据。这意味着FileZilla已将密码短语存储在其设置中。但是如何?除了密钥文件之外,我从未给过它任何东西,请使用r name和host.Oops,我忽略了前面的几行,它们表示一个专有的(或至少不受支持的)密钥格式。请看Ravi的答案,其中详细说明了这一点以及如何将密钥转换为openssh兼容格式。但是FileZilla如何在没有密码的情况下成功建立连接?非常感谢。使用.pem文件成功建立了连接。您需要在
-i
行中将
-
更改为
-
,谢谢兄弟,你今天做了。这个答案应该被接受,因为它很简单,有时你没有配对密钥(pem),所以这个答案足够简单,可以给你两个想法,第一个是ppk与openssh不兼容,第二个是如何从ppk生成pem。