如何通过ssh连接到AWS实例?
我有:
去了我的控制台并创建了环境变量:
$ 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
告知AWS API使用此密钥对并将密钥对保存到文件:
$ ec2-add-keypair ec2-keypair > ec2-keypair.pem
使用此密钥对启动AWS Ubuntu 9实例:
$ ec2-run-instances ami-ed46a784 -k ec2-keypair
尝试与实例建立ssh连接:
$ 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).
可能是什么问题以及如何使其发挥作用?
答案 0 :(得分:485)
对于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映像都默认创建了root用户。
答案 1 :(得分:89)
现在是:
ssh -v -i ec2-keypair.pem ec2-user@[yourdnsaddress]
答案 2 :(得分:45)
Canonical的版本默认使用用户'ubuntu'为任何登陆此处的人提供相同问题的ubuntu图像。
答案 3 :(得分:16)
如果您使用的是Bitnami图片,请以“bitnami”身份登录。
似乎很明显,但我忽视了一些事情。
答案 4 :(得分:8)
对于我的ubuntu图像,它实际上是ubuntu用户而不是ec2用户;)
答案 5 :(得分:5)
Ubuntu 10.04 with openSSH
这是确切的用法:
ssh -v -i [yourkeypairfile] ec2-user@[yourdnsaddress]
例如:
ssh -v -i GSG_Keypair.pem ec2-user@ec2-184-72-204-112.compute-1.amazonaws.com
以上示例直接来自AWS教程,用于连接到Linux / UNIX计算机: http://docs.amazonwebservices.com/AWSEC2/latest/GettingStartedGuide/
答案 6 :(得分:5)
如果pem文件权限太开放,它也会抱怨。 chmod将文件修改为600来修复它。
答案 7 :(得分:4)
我也遇到了这个问题 - 原来我使用的是社区创建的AMI - 默认用户名是niehter root,也不是ect-user或ubuntu。事实上,我不知道它是什么 - 直到我尝试' root '并且服务器请我登录为 xxx ,其中 xxx 无论它告诉你什么。
-cheers!
答案 8 :(得分:3)
您需要在本地计算机中拥有私钥
您需要知道远程计算机或服务器的IP地址或DNS名称,您可以从AWS控制台获取此名称
如果您是Linux用户
chmod 600 <path to private key file>
)ssh -i <path to private key file> <user>@<IP address or DNS name of remote server>
)如果您是Windows用户
答案 9 :(得分:3)
使用......
# chmod 400 ec2-keypair.pem
请勿使用600权限,否则您可能会意外覆盖您的密钥。
答案 10 :(得分:2)
对于Debian EC2实例,用户为admin
。
答案 11 :(得分:2)
这对我有用:
ssh-keygen -R <server_IP>
删除工作站上存储的旧密钥 也适用而不是
然后再次使用相同的ssh:
ssh -v -i <your_pem_file> ubuntu@<server_IP>
在ubuntu实例上,用户名是:ubuntu
在Amazon Linux AMI上,用户名是:ec2-user
我没有必要从图像中重新创建实例。
答案 12 :(得分:1)
如果您使用的是EBS,您还可以尝试在正在运行的实例上安装EBS卷。然后将它安装在正在运行的实例上,看看/ home中发生了什么。你可以看到像用户ubuntu或ec2用户这样的东西?或者在〜/ .ssh / authorized_keys
下是否有正确的公钥答案 13 :(得分:1)
如果您正在从Bitnami运行AWS图像。用户名是bitnami。干杯!
查看我的调试并查看最后一个:
*
ssh -v -i awsliferaysrta.pem.txt root@54.254.250.***
OpenSSH_6.2p2, OSSLShim 0.9.8r 8 Dec 2011
debug1: Reading configuration data /etc/ssh_config
debug1: /etc/ssh_config line 20: Applying options for *
debug1: Connecting to 54.254.250.*** [54.254.250.***] port 22.
debug1: Connection established.
debug1: identity file awsliferaysrta.pem.txt type -1
debug1: identity file awsliferaysrta.pem.txt-cert type -1
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_6.2
debug1: Remote protocol version 2.0, remote software version OpenSSH_5.9p1 Debian-5ubuntu1.1
debug1: match: OpenSSH_5.9p1 Debian-5ubuntu1.1 pat OpenSSH_5*
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: Server host key: RSA 05:5c:78:45:c9:39:3a:84:fe:f8:19:5d:31:48:aa:5f
debug1: Host '54.254.250.***' is known and matches the RSA host key.
debug1: Found key in /Users/macbookpro/.ssh/known_hosts:2
debug1: ssh_rsa_verify: signature correct
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: Roaming not allowed by server
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: awsliferaysrta.pem.txt
debug1: read PEM private key done: type RSA
debug1: Authentication succeeded (publickey).
Authenticated to 54.254.250.*** ([54.254.250.***]:22).
debug1: channel 0: new [client-session]
debug1: Requesting no-more-sessions@openssh.com
debug1: Entering interactive session.
debug1: Remote: Port forwarding disabled.
debug1: Remote: Agent forwarding disabled.
debug1: Remote: X11 forwarding disabled.
debug1: Remote: Forced command.
debug1: Sending environment.
debug1: Sending env LANG = en_US.UTF-8
Please login as the user "bitnami" rather than the user "root".
*
答案 14 :(得分:1)
在我的情况下(Mac OS X),问题是文件的中断类型。试试这个:
1.-使用TextWrangler打开.pem文件
2.-在app的底部,验证Break Type是否为&#34; Windows(CRLF)&#34;。
答案 15 :(得分:1)
用于Amazon Linux AMI的ec2用户和用于Ubuntu映像的ubuntu。 此外,RHEL 6.4和更高版本的ec2用户 RHEL 6.3及更早版的root Fedora ec2用户 Centos root
答案 16 :(得分:0)
有同样的问题。尝试使用“ec2-user”或“root”登录时,权限被拒绝(publickey)。
用Google搜索机器映像的AMI编号,并在Debian wiki页面上显示SSH登录信息。
希望这有帮助。
答案 17 :(得分:0)
ec2-keypair.pem
的权限应为400
chmod 400 ec2-keypair.pem
答案 18 :(得分:0)
只需添加到此列表中即可。今天早上我遇到了一个刚刚添加到AWS EC2实例的新用户的问题。为了减少追逐,问题是 selinux (处于强制执行模式),以及我的用户主目录是在新的EBS附加卷上的事实。不知何故,我猜selinux并不喜欢其他音量。我花了一段时间才弄清楚,因为我查看了所有其他常见的ssh问题(/ etc / ssh / sshd_config很好,当然不允许密码,权限是正确的等等。)
修复?
现在(直到我理解如何允许用户ssh到不同的音量,或以某种方式使该音量成为真正的家庭目录点):
sudo perl -pi -e 's/^SELINUX=enforcing/SELINUX=permissive/' /etc/selinux/config
sudo setenforce 0
那就是它。现在我的新用户可以使用自己的id_rsa密钥登录。
答案 19 :(得分:0)
要连接两个步骤:
您私钥上的Chmod 400,其他人无法访问您的密钥:
chmod 400 toto.pem
要在SSH中连接您的实例,您需要知道实例的公共IP地址:
ssh -i toto.pem ec2-user@XX.XX.XX.XXX
希望它有所帮助!