SSH密钥权限Chmod设置?


63

我需要在计算机上使用SSH来访问我的网站及其数据库(设置符号链接,但我离题了)。

出现以下问题:输入命令:ssh-keygen -t dsa
生成公共/私有dsa密钥对。我将其保存在默认值(/home/user/.ssh/id_dsa)中:并输入两次Enter passphrase

然后我得到这个:

警告:未保护的私钥文件!
“ /home/etc.ssh/id_rsa”的权限0755太开放了。建议他人不能访问您的私钥文件。此私钥将被忽略。权限错误:忽略密钥:[然后是VAR / LIB / SOMEWHERE中的FILE PATH]

现在要解决这个问题,然后我尝试-

sudo chmod 600 ~/.ssh/id_rsa         sudo chmod 600 ~/.ssh/id_rsa.pub    

但是在我的计算机冻结之后不久,又重新登录,出现了一个could not find .ICEauthority error。我解决了这个问题-并删除了SSH文件,但希望能够使用正确的权限来避免将来出现这些问题。我应该如何设置ICEauthority,或者应该在哪里保存SSH密钥-或它们应该具有什么权限?使用虚拟机是最好的吗?

这一切都是非常新的,我的学习曲线非常陡峭,因此任何帮助都值得赞赏。


错别字-抱歉,只生成了一组密钥!
crissixpaul

.ssh目录的权限与关键权限同样重要。应该是600。要解决此问题,请运行:chmod -R 600 ~/.ssh
KWubbufetowicz

4
实际上.ssh目录权限需要为700而不是600。执行权限是使您可以访问该目录中内容的权限。所以,正确的命令应该是chmod 700 $HOME/.sshchmod 600 $HOME/.ssh/id_rsa
MelBurslan

关于.ICEauthority的错误与chmod您显示的命令无关。要么是巧合,要么是您运行了其他一些没有显示给我们的命令。
吉尔斯

Answers:


92

chmod 600 ~/.ssh/id_rsa; chmod 600 ~/.ssh/id_rsa.pub(即chmod u=rw,go= ~/.ssh/id_rsa ~/.ssh/id_rsa.pub)是正确的。

chmod 644 ~/.ssh/id_rsa.pub(即chmod a=r,u+w ~/.ssh/id_rsa.pub)也将是正确的,但chmod 644 ~/.ssh/id_rsachmod a=r,u+w ~/.ssh/id_rsa)则将不正确。您的公开密钥可以是公开的,重要的是您的私有密钥是私有的。

此外,.ssh目录本身必须只能由您写:chmod 700 ~/.sshchmod u=rwx,go= ~/.ssh。您当然需要能够读取它并访问其中的文件(执行权限)。如果其他人可以阅读它,不会直接有害,但是它也没有用。

您不需要sudo。不要sudo用来操纵自己的文件,这只会导致错误。

关于的错误.ICEauthoritychmod您显示的命令无关。要么是巧合,要么是您运行了其他一些没有显示给我们的命令。


〜/ .ssh / known_hosts的权限需要是什么?
nikc

0

我想在上面的答案中加上我的主目录(~/)也需要具有权限755,而无论其权限~/.ssh和其中的文件如何。(这是在Synology NAS上,可能不适用于所有Linux)

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.