如何通过ssh连接到AWS实例?

我有:

Signed up at AWS; Created a public key and a certificate at AWS website and saved them to disk; Went to my console and created environment variables: $ export JAVA_HOME=/usr/lib/jvm/java-6-openjdk/ $ export EC2_CERT=/home/default/aws/cert-EBAINCRNWHDSCWWIHSOKON2YWGJZ5LSQ.pem $ export EC2_PRIVATE_KEY=/home/default/aws/pk-EBAINCRNWHDSCWWIHSOKON2YWGJZ5LSQ.pem Told AWS API to use this keypair and saved the keypair to file: $ ec2-add-keypair ec2-keypair > ec2-keypair.pem Started an AWS Ubuntu 9 instance using this keypair: $ ec2-run-instances ami-ed46a784 -k ec2-keypair Attempted to establish a ssh connection to the instance: $ ssh -v -i ec2-keypair.pem ubuntu@ec2-174-129-185-190.compute-1.amazonaws.com OpenSSH_5.1p1 Debian-5ubuntu1, OpenSSL 0.9.8g 19 Oct 2007 debug1: Reading configuration data /etc/ssh/ssh_config debug1: Applying options for * debug1: Connecting to ec2-174-129-185-190.compute-1.amazonaws.com [174.129.185.190] port 22. debug1: Connection established. debug1: identity file ec2-keypair.pem type -1 debug1: Remote protocol version 2.0, remote software version OpenSSH_5.1p1 Debian-5ubuntu1 debug1: match: OpenSSH_5.1p1 Debian-5ubuntu1 pat OpenSSH* debug1: Enabling compatibility mode for protocol 2.0 debug1: Local version string SSH-2.0-OpenSSH_5.1p1 Debian-5ubuntu1 debug1: SSH2_MSG_KEXINIT sent debug1: SSH2_MSG_KEXINIT received debug1: kex: server->client aes128-cbc hmac-md5 none debug1: kex: client->server aes128-cbc 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-174-129-185-190.compute-1.amazonaws.com' is known and matches the RSA host key. debug1: Found key in /home/default/.ssh/known_hosts:11 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: ec2-keypair.pem debug1: read PEM private key done: type RSA debug1: Authentications that can continue: publickey debug1: No more authentication methods to try. Permission denied (publickey). What could be the problem and how to make it work?


当前回答

ec2-keypair权限。Pem应该是400

Chmod 400 ec2-keypair.pem

其他回答

我也遇到了这个问题——原来我使用的是社区创建的AMI——默认用户名是niehter root,也不是ect-user或ubuntu。事实上,我不知道它是什么,直到我尝试了“root”,服务器好心地让我以xxx的身份登录,其中xxx是它告诉你的任何东西。

干杯!

Canonical发布的版本默认使用'ubuntu'用户,任何使用ubuntu映像登录这里的人都会遇到相同的问题。

对于Ubuntu实例:

chmod 600 ec2-keypair.pem
ssh -v -i ec2-keypair.pem ubuntu@ec2-174-129-185-190.compute-1.amazonaws.com

对于其他情况,你可能不得不使用ec2-user而不是ubuntu。

我所使用的大多数EC2 Linux映像默认只创建了根用户。

参见:http://www.youtube.com/watch?v=WBro0TEAd7g

如果您正在使用EBS,还可以尝试将EBS卷挂载到正在运行的实例上。然后将它挂载到正在运行的实例上,看看/home中发生了什么。你可以看到用户是ubuntu还是ec2-user ?或者在~/.ssh/authorized_keys下是否有正确的公钥

您需要在本地机器中拥有您的私钥

您需要知道远程计算机或服务器的IP地址或DNS名称,您可以从AWS控制台获得此信息

如果你是linux用户

确保私钥的权限为600 (chmod 600 <私钥文件>的路径) 使用ssh连接到您的机器 (ssh -i <私钥文件>的路径<用户>@<远程服务器>的IP地址或DNS名称)

如果你是windows用户

使用PuTTy创建ssh会话(http://the.earth.li/~sgtatham/putty/latest/x86/putty-0.66-installer.exe) 如果您的私钥文件是.pem格式,请使用puttygen将其转换为.ppk格式 2 .打开PuTTy工具,设置ppk文件、远程服务器IP地址或DNS名称后,启动ssh会话