SSH密钥权限被拒绝

时间:2016-06-14 17:33:55

标签: unix ssh vpn digital-ocean ssh-keys

我正在尝试使用Digital Ocean设置云托管。

请跳过带有星号(***)的粗体部分以了解实际问题。这里下面的所有内容都是背景信息。

我需要生成一个RSA密钥对,所以我导航到我的cd ~/.ssh/目录,然后:

ssh-keygen -t rsa

我已经有了id_rsaid_rsa.pub个文件,所以在提示时:

  

输入要保存密钥的文件(/demo/.ssh/id_rsa):

我输入以下内容来创建一个新对:

~/.ssh/id_cloudhosting

然后我被要求输入密码,我只需按return以获取“无密码”:

  

输入密码(无密码短语为空):

我重复上面的确认,最终输出如下(只是一个演示图片):

enter image description here

现在我有两个新文件id_cloudhostingid_cloudhosting.pub我需要将公共文件的内容复制到我的Digital Ocean托管'添加SSH控制台'。我这样做是这样的:

cat ~/.ssh/id_cloudhosting.pub

返回文件的内容:

ssh-rsa 
bUnChOFcOd3scrambledABCDEFGHIJKLMNOPQRSTUVWXYZnowIknowmy
ABCnextTIMEwontyouSINGwithmeHODOR demo@a

我将密钥粘贴到我的托管控制台中,并成功保存。

下一步是权限问题的开始: ****************

我需要"spin up a new server" - 他们的文档中的第四步。所以我输入以下内容:

cat ~/.ssh/id_worker.pub | ssh root@[my.hosting.ip.address] "cat >> ~/.ssh/authorized_keys"

应将公钥作为root用户复制到名为authorized_keys

的新创建文件中

此步骤永远不会被创建,因为我立即要求我的主机密码。我没有创造过一个!我在那时按return(或输入),所以我在提示时也这样做,并获得权限被拒绝!

  

root @ [host.ip.address]的密码:

     

许可被拒绝,请再试一次。

     

root @ [host.ip.address]的密码:

     

许可被拒绝,请再试一次。

     

root @ [host.ip.address]的密码:

     

权限被拒绝(公钥,密码)。

如何纠正这些被拒绝的权限?

编辑:修正

似乎通过使用非常规(id_rsa除外)文件,我需要通过执行以下操作明确标识文件:

ssh root@droplet.ip.address -i /path/to/private_key_file

...请确保不要在那里使用public_key_file。我没有从终端连接到服务器。这是在摧毁了我以前的Droplet之后,用新的密钥文件创建了一个新的Droplet,正如@ will-barnwell建议的那样

1 个答案:

答案 0 :(得分:1)

假设您已按照链接指南执行第3步,当您从其Web UI创建新服务器时,请使用“添加SSH密钥”选项并选择您之前添加到帐户中的密钥。

  

实际启动新服务器时,请选择您要使用的密钥   喜欢从“创建Droplet”屏幕安装在您的服务器上。您   可以根据需要选择任意数量的键:

     

点击SSH密钥后,文字说“你的   root密码将通过电子邮件发送给你“将消失,你不会   收到确认您的服务器已创建的电子邮件确认。

您使用的命令是将ssh密钥添加到预先存在的服务器。从上面的引用来看,我打赌你提示输入的密码在你的电子邮件中。

为什么?

当您在Digital Ocean(或大多数云托管服务)上创建服务器时,会自动为您生成root密码,除非您使用授权密钥设置服务器。

使用密钥身份验证绝对是一个很好的安全选择,但请务必仔细阅读说明,不要只是复制/粘贴命令,并希望一切顺利。

编辑: OP对该问题的评论进一步阐明了这个问题。

新建议:按照建议打开服务器并设置SSH密钥,如果服务器不接受您的旧SSH密钥并且提示您输入您没有的密码,则该服务器可能无法使用。

小心使用上一个身份验证密钥,在删除旧密钥之前添加一个新密钥。