如何理解为什么我不断收到:ssh-copy-id 权限被拒绝(公钥)?

问题描述 投票:0回答:2

我正在尝试使用从 Amazon EC2 启动的 Ubuntu Server 14.04 设置我的生产 Rails 服务器。这不是我第一次这样做,过去很多次都成功了。

问题是,几乎每次我在设置实例时尝试使用

ssh-copy-id
复制我的
.pub
文件时,大约 95% 的时间都会失败并出现
Permission denied (publickey).

我真的不知道为什么这总是发生。我尝试过在无数其他问题和答案中读过的各种解决方案,但这些解决方案也不起作用。大多数SO答案表明

ssh-copy-id
是问题的解决方案,但对我来说,最终总是相反。

以下是我尝试过的一些解决方案:

  1. PasswordAuthentication yes
     中设置 
    /etc/ssh/sshd_config
  2. RSAAuthenication yes
     中设置 
    /etc/ssh/sshd_config
  3. PubkeyAuthentication yes
     中设置 
    /etc/ssh/sshd_config
  4. 取消注释
  5. AuthorizedKeysFile %h/.ssh/authorized_keys
     中的 
    /etc/ssh/sshd_config
    
    
  6. 发布
  7. .pem
     我使用 openssl 从 EC2 下载到 
    .pub
    ,然后尝试将 
    ssh-copy-id
     到服务器
    
    
    • 例如openssl rsa -in ~/.ssh/mykey.pem -pubout > ~/.ssh/mykey.pub
    • 后跟:`ssh-copy-id -i ~/.ssh/mykey.pub ubuntu@[IPADDRESS]
  8. 使用
  9. 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

 来允许我的本地计算机这样做?

ruby-on-rails ubuntu ssh amazon-ec2
2个回答
1
投票
随后:

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
    

0
投票
当远程计算机中的 ~/.ssh/ 文件夹没有远程用户的正确权限时,您也可能会遇到被拒绝的问题。 例如,您可以执行以下命令来为 .ssh 文件夹授予正确的权限。 chmod 0700 ~/.ssh

© www.soinside.com 2019 - 2024. All rights reserved.