~/.ssh/authorized_keys
文件中清除了所有内容。幸运的是,我已经打开了SSH,因此我仍然可以连接并且可以修复文件,但是当我尝试将密钥文件放回原位时,它不起作用。我仍然从本地计算机上的服务器获得拒绝权限。 authorized_keys
的权限为600。我尝试将SSH密钥附加到ssh-rsa并关闭ssh-rsa。我也尝试过将SSH密钥全部换成一行,但是那也行不通。还有其他我需要做的事情,例如如何重新加载文件吗?
#1 楼
您切勿将文件的内容以-----BEGIN RSA PRIVATE KEY-----
开头的内容保存在服务器上,即私钥。而是必须将公用密钥放入~/.ssh/authorized_keys
文件中。使用
.pub
生成时,此公用密钥具有ssh-keygen
扩展名,其内容以ssh-rsa AAAAB3
开头。 (在此问题的答案中描述了二进制格式。)服务器上的~/.ssh
的权限应为700。服务器上的~/.ssh/authorized_keys
文件的模式应为600。客户端上的(私钥)密钥的权限应为600。如果私钥未使用密码保护,并且已将其放在服务器上,建议您生成一个新版本:
ssh-keygen -t rsa
如果完全确定没有人可以从服务器中恢复已删除的私钥,则可以跳过此操作。
如果这样做没有帮助,请运行带有更多详细信息的选项的
ssh
:ssh -vvv user@example.com
在服务器端,您可以查看
/var/log/auth.log
以获取详细信息。评论
使用Amazon EC2服务器,我得到的只是私钥(key.pem)。我在任何地方都没有公共密钥。
–戴夫龙
2011年6月1日17:04
@Dave Long:您必须使用ssh-keygen -t rsa生成一个新密钥,并将新创建的id_rsa.pub文件放在服务器上的〜/ .ssh / authorized_keys中。另请参阅docs.amazonwebservices.com/AWSEC2/latest/UserGuide/…
– Lekensteyn
2011年6月1日17:33
@DaveLong:您可以随时从私钥生成公钥。您可以使用以下命令简单地执行此操作:ssh-keygen -y -f key.pem> key.pub
–摩根·布莱克索恩(Morgan Blackthorne)
13年5月17日在0:40
@MorganBlackthorne确实如此,我建议您生成私钥,而不是从远程源接受私钥。您不能完全确定私钥没有泄漏。
– Lekensteyn
13年5月17日在8:49
@Gerrat固定²。
– Lekensteyn
2014年5月31日19:59
#2 楼
在远程计算机的authorized_keys
中安装公钥的另一种方法:cat ~/.ssh/id_rsa.pub | ssh USER@HOST "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"
一些优点:
不需要
ssh-copy-id
确保
mkdir
可以正常工作,然后再尝试将id_rsa.pub
附加到authorized_keys
上。评论
您的回答帮助我在多台远程计算机上执行了此操作,而没有任何其他软件包,谢谢。
– nol
2014年3月7日上午10:06
这不能保证将使用正确的权限创建“〜/ .ssh”目录和“〜/ .ssh / authorized_keys”文件。
–尼克
2014年6月4日下午5:55
@尼克,我有这个问题。因此,那么也许真的必须首先检查它们的存在,如果缺少,请使用chmod(700 /文件夹,600 /文件)正确创建,然后再添加?那么,也许它不可能是一个班轮吗?
–AnneTheAgile
2014年8月7日在3:52
@AnneTheAgile我认为将@MariusButuc给出的答案的mkdir -p〜/ .ssh部分更改为umask 077 && mkdir -p〜/ .ssh是您要做的所有事情,以确保它可以正常工作。
–尼克
2014年8月7日14:02
ty @尼克!我会去的。
–AnneTheAgile
2014年8月7日在21:02
#3 楼
如果您具有基于登录的身份验证,请使用ssh-copy-id
将您的公钥附加到远程服务器。ssh-copy-id user@host
评论
在Mac上,这似乎不是有效的命令,这是我的客户端计算机所使用的命令。
–戴夫龙
2011年6月1日17:05
可能会有帮助phildawson.tumblr.com/post/484798267/ssh-copy-id-in-mac-os-x
–Shoaib Nawaz
2011年6月1日17:23
在OSX上,可以使用brew安装:brew install ssh-copy-id
– phil
13年11月21日,0:26
在Macports上,可以使用sudo port install openssh + ssh_copy_id安装此命令。 + ssh_copy_id使用ssh_copy_id变体安装openssh。
– Stefan Lasiewski
2014-09-18 22:23
请注意,phildawson.tumblr.com上的说明要求您以root用户身份安装不受信任的软件。除非您知道可以信任作者,否则这是非常危险的,也是被黑客入侵的好方法。
– Stefan Lasiewski
2014-09-18 22:24
#4 楼
local> scp .ssh/id_dsa.pub remote.com:
local> ssh remote.com
remote> cat id_dsa.pub >> .ssh/authorized_keys
remote> rm id_dsa.pub
remote> exit
#5 楼
最简单的方法是复制并粘贴...首先查看/复制本地公共密钥
id_rsa.pub
的内容,包括开头的“ ssh-rsa”,直到其以您的电子邮件地址结尾:cat ~/.ssh/id_rsa.pub
然后在服务器上编辑
authorized_keys
并将剪贴板的内容粘贴到该文件中任何其他键的下方:nano ~/.ssh/authorized_keys
并保存
Ctl+O
,退出文件Ctl+X
,退出SSH会话exit
并尝试重新登录以确认其正常工作。如果不要求输入密码,它就可以工作。评论
这远非最简单的方法,它会导致错误发生,从而损坏文件。将密钥分配到authorized_keys文件中更为安全。
– RichieHH
20-11-30在3:14
我不同意。错误输入“ cat”并突出显示显然不属于文件一部分的行将需要大量的才能。
–ow3n
20-11-30在13:20
#6 楼
在要放置密钥的远程计算机上获取一个Shell,然后可以运行此单行代码来创建必要的文件和目录,设置它们的权限并将密钥附加到文件中。当然,您必须更改下面的KEYGOESHERE
部分及其后的注释。mkdir -p ~/.ssh && chmod 700 ~/.ssh && touch ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys && echo "ssh-rsa KEYGOESHERE user@remotehost or note" >> ~/.ssh/authorized_keys
#7 楼
我认为我可以为此做出贡献,因为它专门针对AWS实例,所有答案仅将问题视为Linux问题,就好像它是硬件一样。您需要了解的第一件事是,永远不要将EC2实例视为硬件。这只会为您创造更多的工作。这是我看到人们使用AWS的最大障碍。对您的实例进行AMI并将所需的密钥注入新实例。 cloud-init会为您照顾它。
更详细地,您需要做的就是在原始AMI之外创建新实例时使用正确的公钥。
要生成自己的pub和pem文件密钥对的已批准答案的注释,AWS为您提供了上载公钥以供EC2使用的选项。
http://docs.aws .amazon.com / AWSEC2 / latest / UserGuide / ec2-key-pairs.html#how-to-generate-your-own-key-and-import-it-aws
#8 楼
保存公钥后,应将私钥保存到PC上的目录和文件中。在腻子ssh的auth部分中,您应该指向保存在桌面上的私钥文件。它将起作用。对我有用。评论
如果Windows控制台可以将所有ssh功能添加到其解释器中,我就喜欢它
–丹尼斯
2014年11月9日在1:46
#9 楼
这是一个变体,您可能会在文本文件中找到一个公钥文件名列表,并且大批公钥文件也位于同一目录中。如果您要提供大量要导入的公钥文件列表:-)
$ for i in $(cat ListOfPubKeyFiles.txt) ; do cat $i | ssh User@Hostname "cat >> ~/.ssh/authorized_keys"; done
评论
多年后,这种“似乎”仍然有意义且活跃;我只想作一个观察,谈论一下躲过了一个子弹:“幸运的是我已经打开了SSH,所以我仍然可以连接[..]”-嘘! ; dP该帖子是在我生日那天编辑的,两个月前在我生日那天救了我。