请帮助我了解如何解决我的 SSH 问题:
我可以通过 SSH 毫无问题地进入运行 Ubuntu 10.10‘Maverick Meerkat’的 EC2 实例:
$ ssh -i MyEC2Key.pem [email protected]
当我对我创建的新用户尝试执行同样的事情时出现了问题:
$ ssh -i MyEC2Key.pem [email protected]
不幸的是,当我尝试这个时,我收到以下错误消息:
权限被拒绝(公钥)。
我不明白我遗漏了什么,而且对大多数这些东西都比较陌生。我只希望这个新用户拥有管理员权限和完全 SSH 访问权限。这些是我经历过的步骤,全部以用户 ubuntu 的身份远程登录并使用 vim 进行编辑。如果有人能告诉我我遗漏了什么或误解了什么,我将不胜感激。
- 我创建了一个名为 robert 的新用户
- 我已将该用户添加到管理员组
我已将以下内容添加到
/etc/sudoers
root ALL=(ALL) ALL (that line was already there) robert ALL=(ALL) ALL (that line was what I added)
我已将以下行添加到
/etc/ssh/sshd_config
AllowUsers robert ubuntu root
我已经重新启动了 ssh 守护进程
- 我已经以 ubuntu 身份注销,并尝试在新的终端中以 robert 身份重新登录
仍然卡住。只是为了检查一下,是的,我可以通过 SSH 以 ubuntu 身份登录并使用 sudo su robert 以 robert 身份登录,但这不是我所需要的 - 我需要能够直接以 robert 身份通过 SSH 登录。
以下是尝试以 robert 身份使用调试标志通过 SSH 进行调试的内容:
$ ssh -v -i MyEC2Key.pem [email protected]
OpenSSH_5.2p1, OpenSSL 0.9.8l 5 Nov 2009
debug1: Reading configuration data /etc/ssh_config
debug1: Connecting to ec2-01-LALALALALALA.eu-west-1.compute.amazonaws.com [XX.XXX.XX.XXX] port 22.
debug1: Connection established.
debug1: identity file MyEC2Key.pem type -1
debug1: Remote protocol version 2.0, remote software version OpenSSH_5.5p1 Debian-4ubuntu4
debug1: match: OpenSSH_5.5p1 Debian-4ubuntu4 pat OpenSSH*
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_5.2
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: Host 'ec2-01-LALALALALALA.eu-west-1.compute.amazonaws.com' is known and matches the RSA host key.
debug1: Found key in /Users/robmccardle/.ssh/known_hosts:4
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: MyEC2Key.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).
答案1
要对两个帐户使用相同的密钥,请执行以下操作
sudo cp -r /home/ubuntu/.ssh /home/robert/
cd /home/robert
sudo chown -R robert:robert .ssh
这只会将与您的私钥 (MyEC2Key.pem) 对应的公钥复制到 robert 的帐户。这还会保留 /home/robert/.ssh/authorized_keys 所需的适当权限。
(出于几个显而易见的原因,请不要对具有多个授权密钥的两个现有用户执行上述操作!——它仅建议作为使用默认“ubuntu”用户在 EC2 上设置新用户的简单解决方案)
现在您应该能够执行以下操作:
ssh -i MyEC2Key.pem [email protected]
如果这不起作用,请确保您具有正确的限制权限(比较 /home/ubuntu/.ssh 和 /home/robert/.ssh 以及 authorized_keys 文件的权限)
如果仍然不起作用,还有两种选择:
1)在 robert 的本地机器上生成一个新的密钥对,并将公钥添加到 /home/robert/.ssh/authorized_keys (在 EC2 实例上)
您可以在此处找到说明: http://www.ece.uci.edu/~chou/ssh-key.html
2)在 EC2 上,您可以允许 ssh 接受基于密码的身份验证(默认情况下禁用)。
sudo nano /etc/ssh/sshd_config
并修改
PasswordAuthentication no
到
PasswordAuthentication yes
这将允许您使用密码进行 ssh。
答案2
似乎权限允许您进入目录。请确保您的 /home/ 上的权限设置正确用户/.ssh 目录。
chmod -R o-rwx ~/.ssh