我希望能够ssh
进入我的节点,然后运行用于其自身目的ssh
的软件,进入其他机器和自身。它假定ssh
已经设置了密钥,因此它不能获取-i
标志并使用它。
我有一个可以正常工作的 Xen 设置:我所要做的就是 scp 我的私钥.ssh/id_rsa
和公共部分.ssh/id_rsa.pub
(我可以在 EC2 中恢复它,因为它在.ssh/authorized_keys
.
同样的设置在 EC2 中根本不起作用。我已经验证了这一点,/etc/ssh/sshd_config
并且/etc/ssh/ssh_config
在我的 Xen 盒子和 EC2 盒子上都一样。
我使用的基础 AMI 是ami-1774927e
Alestic.com 映像,其中包含全新的 Ubuntu Hardy 安装。当然,我的安全组中的 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
但我不确定如何使用它来解决我的问题。
在 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
(或它不会工作)好吧,如果没有身份验证日志的内容来查看 SSH 服务器的想法,以及 SSH 客户端的详细运行的输出,我唯一能提供的猜测是配置错误。
编辑:所以,除非我误解你,否则你可以很好地登录 EC2 机器,除非你不使用正确的密钥?