在 Linux 中通过 SSH 连接到 Amazon EC2
Posted
技术标签:
【中文标题】在 Linux 中通过 SSH 连接到 Amazon EC2【英文标题】:SSH connection to Amazon EC2 in Linux 【发布时间】:2012-02-17 14:18:36 【问题描述】:我正在尝试使用以下命令从 shell SSH 到亚马逊 ec2 实例
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':
为什么它要求 sec.ppk 的密码
有什么问题?有人可以帮忙吗?
忘了提到我使用 FileZilla 成功建立了与上述相同凭据的连接
【问题讨论】:
因为sec.ppk
是用密码加密的。你试过输入吗?
但是我使用 FileZilla 成功地建立了连接,并使用相同的密钥使用相同的上述凭据。
这意味着 FileZilla 已将密码存储在其设置中。
但是怎么做?除了密钥文件、用户名和主机之外,我从来没有给它任何东西。
糟糕,我忽略了前面几行,它们表示专有(或至少不受支持)密钥格式。查看 Ravi 的答案,其中详细说明了以及如何将您的密钥转换为与 openssh 兼容的格式。
【参考方案1】:
试试
ssh -i /directory/keyname.pem ubuntu@ec2-xx.compute-1.amazonaws.com
其中 .pem 是您在设置实例时创建的密钥对文件。
【讨论】:
非常感谢。使用 .pem 文件成功建立连接。 你需要在-i
这一行把–
改成-
【参考方案2】:
适用于 AWS 的新用户。 .ppk
扩展与 openSSH 不兼容,因此仅适用于 FileZilla / PutTTY。
在这种情况下,最简单的做法是安装 PutTTY 并使用 putty-tools 将 .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>
希望这有助于作为一个快速的解决方案。
【讨论】:
谢谢,听起来您已经使用密码创建了您的私钥。您是如何创建密钥对的?您在创建私钥时是否输入了密码?
您需要输入您在创建密钥时提供的密码。和
debug1: read PEM private key done: type <unknown>
这表明,您的密钥未被识别。理想情况下,您会得到一个类似 RSA 的方法名称。
进一步检查您是否在某处有像 id_rsa.pub 这样的公钥,如果有,请尝试使用它,以防您忘记密码。
编辑:
好的,猜猜你使用的是亚马逊的 ppk。要使用您的 EC2-priv.ppk 密钥,您必须将其转换为 OpenSSH 可以理解的格式。您可以使用 PutTTYgen 程序执行此操作。这将为您创建一个 .pub 文件,然后您可以使用该文件进行连接。
【讨论】:
但是 FileZilla 是如何在没有密码的情况下成功建立连接的呢?以上是关于在 Linux 中通过 SSH 连接到 Amazon EC2的主要内容,如果未能解决你的问题,请参考以下文章
在 Java 中通过 SSH 隧道连接到 Mongo 数据库
在 Netbeans 中通过 SSH 连接到 MySql db
用于从该框中通过 SSH 连接到 jumphost 和 sftp 的 Python 脚本