我希望能够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_config
和ssh_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 机器,除非你没有使用正确的密钥?