我正在尝试使用从 Amazon EC2 启动的 Ubuntu Server 14.04 设置我的生产 Rails 服务器。这不是我第一次这样做,过去很多次都成功了。
问题是,几乎每次我在设置实例时尝试使用
ssh-copy-id
复制我的 .pub
文件时,大约 95% 的时间都会失败并出现 Permission denied (publickey).
。
我真的不知道为什么这总是发生。我尝试过在无数其他问题和答案中读过的各种解决方案,但这些解决方案也不起作用。大多数SO答案表明
ssh-copy-id
是问题的解决方案,但对我来说,最终总是相反。
以下是我尝试过的一些解决方案:
PasswordAuthentication yes
中设置 /etc/ssh/sshd_config
RSAAuthenication yes
中设置 /etc/ssh/sshd_config
PubkeyAuthentication yes
中设置 /etc/ssh/sshd_config
AuthorizedKeysFile %h/.ssh/authorized_keys
中的
/etc/ssh/sshd_config
.pem
我使用 openssl 从 EC2 下载到
.pub
,然后尝试将
ssh-copy-id
到服务器
openssl rsa -in ~/.ssh/mykey.pem -pubout > ~/.ssh/mykey.pub
ssh-keygen
生成我自己的密钥并尝试
ssh-copy-id
。
bundle update
一次用于
net-ssh
gem,然后另一次发布 pem,但必须为 root 用户而不是最初的预期用户执行此操作,等等等等。我认为这里的问题也在于我没有完全理解 ssh 密钥是如何工作的。我知道我下载了
mykey.pem
。然后我使用
.pem
限制对
sudo chmod 400 /path/to/mykey.pem
的访问,因为它需要受到保护。然后我可以使用
ssh -i /path/to/mykey.pem ubuntu@[ipaddress]
进行 ssh 登录。从那里开始,其他一切似乎都不清楚了。使用 ssh 密钥将本地计算机连接到生产服务器的最简单过程是什么?我如何使用
ssh-copy-id
来允许我的本地计算机这样做?
随后:这是无稽之谈。
ssh-copy-id -i ~/.ssh/mykey.pub ubuntu@[IPADDRESS]
-i
接受私钥部分。如果您从 EC2 下载了 PEM 密钥,并且公共部分位于服务器上,则您应该能够使用
连接到实例
ssh -i ~/.ssh/mykey.pem ubuntu@[IPADDRESS]
如果不起作用,请检查服务器日志
/var/log/auth.log
是否有错误。
ssh-copy-id
还要求您对服务器进行基于密码的访问,如果我是对的(对于错误),这在 EC 实例中是不允许的。如果上述方法不起作用,请使用
ssh-keygen -f new_key
创建新密钥,并将公共部分从
new_key.pub
作为文本复制到服务器文件
/home/ubuntu/.ssh/authorized_keys
,然后像
ssh -i new_key ubuntu@[IPADDRESS]
一样连接。如果您想与
ssh alias
联系,请在
ssh_config
中提供
~/.ssh/config
,例如:
Host alias
Hostname [IPADDRESS]
User ubuntu
IdentityFile your_key