如何通过ssh连接到AWS实例?
我有:
-
在AWS注册;
-
在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
- 尝试与实例 Build 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).
可能是什么问题以及如何使其发挥作用?
20 回答
现在是:
Canonical的版本默认使用用户'ubuntu'来登陆这里的任何人使用ubuntu图像来解决同样的问题 .
如果您使用的是Bitnami图像,请以“bitnami”身份登录 .
看似显而易见,但我忽视了一些事情 .
对于我的ubuntu图像,它实际上是ubuntu用户而不是ec2用户;)
对于Ubuntu实例:
对于其他实例,您可能必须使用
ec2-user
而不是ubuntu
.我使用的大多数EC2 Linux映像都默认创建root用户 .
另见:http://www.youtube.com/watch?v=WBro0TEAd7g
Ubuntu 10.04与openSSH
这是确切的用法:
例如:
以上示例直接从AWS教程中获取,用于连接到Linux / UNIX计算机:http://docs.amazonwebservices.com/AWSEC2/latest/GettingStartedGuide/
如果pem文件权限太开放,它也会抱怨 . chmod文件到600来解决这个问题 .
我也遇到了这个 - 结果我使用的是社区创建的AMI - 默认用户名是niehter root,也不是ect-user或ubuntu . 事实上,我不知道它是什么 - 直到我尝试' root '并且服务器请求我登录 xxx 其中 xxx 是它告诉你的任何东西 .
-干杯!
使用...
不要使用600权限,否则您可能会意外覆盖您的密钥 .
您需要在本地计算机上拥有私钥
您需要知道远程计算机或服务器的IP地址或DNS名称,您可以从AWS控制台获取此名称
如果您是Linux用户
确保私钥的权限为600(
chmod 600 <path to private key file>
)使用 ssh (
ssh -i <path to private key file> <user>@<IP address or DNS name of remote server>
)连接到您的机器如果您是Windows用户
使用PuTTy创建ssh会话(http://the.earth.li/~sgtatham/putty/latest/x86/putty-0.66-installer.exe)
如果您的私钥文件是.pem格式,请使用 puttygen 将其转换为.ppk
启动PuTTy,设置远程服务器的ppk文件,IP地址或DNS名称并启动ssh会话
这对我有用:
删除存储在工作站上的旧密钥也可以代替
然后再次做同样的ssh工作:
在ubuntu实例上,用户名是:ubuntu在Amazon Linux AMI上的用户名是:ec2-user
我没有必要从图像重新创建实例 .
对于Debian EC2实例,用户是
admin
.如果您正在从Bitnami运行AWS映像 . 用户名是bitnami . 干杯!
看看我的调试,看看最后一个:
在我的情况下(Mac OS X),问题是文件的中断类型 . 试试这个:
1.-使用TextWrangler打开.pem文件
2.-在app的底部,验证Break Type是否为“Windows(CRLF)” .
它的ec2-user用于Amazon Linux AMI和ubuntu用于Ubuntu映像 . 另外,RHEL 6.4及更高版本的ec2-user RHEL 6.3和更早的根Fedora ec2-user Centos root
只需添加到此列表中 . 我今天早上遇到了麻烦,刚刚添加到AWS EC2实例的新用户 . 为了切入追逐,问题是 selinux (处于 enforcing 模式),以及我的用户主目录是在新的EBS附加卷上的事实 . 不知何故,我猜selinux不喜欢其他音量 . 我花了一段时间才弄清楚,因为我查看了所有其他常见的ssh问题(/ etc / ssh / sshd_config很好,当然没有密码允许,权限是正确的等等)
修复?
现在(直到我理解如何允许用户ssh到不同的音量,或以某种方式使该音量成为真正的家庭dir点):
而已 . 现在我的新用户可以使用自己的id_rsa密钥登录 .
有同样的问题 . 尝试使用“ec2-user”或“root”登录时,权限被拒绝(publickey) .
用Google搜索机器映像的AMI编号,它在Debian wiki页面上有SSH登录信息 .
希望这可以帮助 .
如果您使用的是EBS,还可以尝试在正在运行的实例上安装EBS卷 . 然后将它安装在正在运行的实例上,看看/ home中发生了什么 . 你可以看到像用户ubuntu或ec2用户这样的东西?或者在〜/ .ssh / authorized_keys下是否有正确的公钥
ec2-keypair.pem
的权限应为400
chmod 400 ec2-keypair.pem
有两个连接步骤:
您的私钥上的Chmod 400,其他人无法访问您的密钥:
要通过SSH连接到您的实例,您需要知道公共IP您的实例的地址:
希望能帮助到你 !