EC2 - 使用密钥或密码自行登录

EC2 - 使用密钥或密码自行登录

我希望能够ssh进入我的节点,然后运行软件,该软件出于自己的目的ssh进入其他机器和自身。它假设ssh密钥已设置,因此它无法获取标志-i并使用它。

我有一个可以正常工作的 Xen 设置:我所要做的就是将我的私钥 scp 到.ssh/id_rsa并将公共部分 scp 到.ssh/id_rsa.pub(因为它在 中,所以我可以在 EC2 中恢复它.ssh/authorized_keys)。

同样的设置在 EC2 中根本不起作用。我已经验证了这一点,/etc/ssh/sshd_config/etc/ssh/ssh_config我的 Xen 盒子上和在 EC2 盒子上都是一样的,前者可以工作,后者不工作。

我使用的基础 AMI 是ami-1774927e包含全新 Ubuntu Hardy 安装的 Alestic.com 映像。当然,我的安全组中的端口 22 是开放的,用于ssh流量。

对我做错的事情有什么想法吗?

编辑:根据 womble 的建议和 Amazon EC2 论坛上的建议,以下是可能有用的额外信息:

sshd_configssh_config在我的 Xen 和 EC2 盒子上是相同的(并且是之前指定的 Alestic ami 附带的默认盒子),并且我没有使用任何命令行选项。ssh-agent没有运行,并且机器上没有其他ssh密钥。我只是以 root 身份登录,并且最重要的是,如果在键名不是时使用 -i,我可以从同一个框登录到我的 EC2 框id_rsa

当我使用 -i 标志时, ssh -v 的尾部如下所示:

debug1: Host 'localhost' is known and matches the RSA host key.
debug1: Found key in /root/.ssh/known_hosts:1
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: ec2scale.key
debug1: read PEM private key done: type RSA
debug1: Authentication succeeded (publickey).
debug1: channel 0: new [client-session]
debug1: Entering interactive session.
debug1: Sending environment.
debug1: Sending env LANG = en_US.UTF-8
Last login: Mon Jul  6 23:42:49 2009 from 127.0.0.1
Linux (none) 2.6.21.7-2.fc8xen #1 SMP Fri Feb 15 12:34:28 EST 2008 x86_64
... and so on ...

但是当我不使用 -i 标志时,我得到了这个:

debug1: Host 'localhost' is known and matches the RSA host key.
debug1: Found key in /root/.ssh/known_hosts:1
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: /root/.ssh/identity
debug1: Offering public key: /root/.ssh/id_rsa
debug1: Server accepts key: pkalg ssh-rsa blen 279
debug1: read PEM private key done: type RSA
debug1: Authentications that can continue: publickey
debug1: Trying private key: /root/.ssh/id_dsa
debug1: No more authentication methods to try.
Permission denied (publickey).

我已经diff检查过密钥,发现它们是相同的,我可以看到服务器接受了我上面的 id_rsa 密钥,但身份验证没有通过。/var/log/auth.log当我登录时,检查结果显示如下:

Jul  6 23:46:09 ip-10-244-50-159 sshd[1354]: error: RSA_public_decrypt failed: error:0407006A:lib(4):func(112):reason(106)

我可以使用它openssl来查看错误代码:

root@ip:~# openssl errstr 0407006A
error:0407006A:rsa routines:RSA_padding_check_PKCS1_type_1:block type is not 01 

但我不确定如何使用它来解决我的问题。

答案1

在 Amazon EC2 论坛上做了大量工作后,“解决方案”就是简单地将密钥命名为 以外的任何名称id_rsa。由于唯一可以使用且会自动采用的其他密钥名称是id_dsa,因此我将密钥命名为 ,并且成功了。此主题显示了调试问题所采取的步骤,这里重现了这些步骤,以防将来的读者遇到类似的问题。

  • 的内容/etc/ssh/sshd_config
  • 的内容/etc/ssh/ssh_config
  • 的内容$HOME/.ssh/authorized_keys
  • 的内容$HOME/.ssh/config
  • 目录和文件的权限
  • 您正在使用的命令行选项(例如-I-A
  • 您正在使用的用户名
  • SSH_*环境变量
  • ssh-agent状态以及哪些键已ssh-add
  • ssh -v -i $HOME/.ssh/id_rsa <REMOTE>
  • ssh -v <REMOTE>
  • strace ssh -v -i $HOME/.ssh/id_rsa <REMOTE>
  • sshd调试标志-d
  • 通过复制id_rsa到来解决id_dsa,确保没有id_dsa.pub(否则它将不起作用)

答案2

好吧,如果没有身份验证日志的内容来查看 SSH 服务器认为正在发生的事情,以及 SSH 客户端详细运行的输出,我唯一能提供的猜测是某些配置有错误。

编辑:所以,除非我误解了你的意思,否则你可以正常登录到 EC2 机器,除非你没有使用正确的密钥?

相关内容