我已经生成了密钥,并已获得公司 IT 团队的访问权限批准。但是,每次启动机器时,我都需要将它们添加到终端(我得到的解决此问题的脚本对我来说还不起作用)。所以现在每次启动机器时我都必须发出此命令ssh-add ~/.ssh/keyfolder/private_key
。
然而今天,我开始收到这个错误:
~/.ssh/keyfolder/private_key: Permission denied
我尝试在该私钥上发出 chmod 777,但没有成功。
我做错了什么/我做了什么?
$sudo ls -lha ~/.ssh/keyfolder/private_key
-rwxrwxrwx 1 rabdelaz staff 1.7K 2013-07-29 10:19 /home/rabdelaz/.ssh/keyfolder/private_key
答案:我需要在正确的位置获得正确的权限级别(显然)。
所以我所做的是将“keyfolder”和密钥本身设置为 600。
不确定之前的权限是什么......
答案1
您希望密钥文件夹和密钥本身都只能由用户读取。我总是chmod 700 ~/.ssh; chmod 600 ~/.ssh/*
自己这样做,您显然希望更改这些目录以适合您自己的用例。
或者,您也可以chown -R $USERNAME ~/.ssh; chmod -R go-rwx ~/.ssh
chown
例如,当以 root 身份下载或安装密钥文件时,可能需要此项。
答案2
永远不要chmod 777
对您的私钥执行任何操作!这(可能)会使它公开可读,而您不希望出现这种情况。此外,在某些情况下,SSH 甚至会拒绝使用权限太宽松的文件,因此您可能会因此而自食其果。
如果文件权限不是问题,则可能还有其他几个原因。您可能对任何目录~/.ssh
或~/.ssh/keyfolder
(技术上也对~
,但这不是唯一的症状)设置了错误的权限。使用ls -adl
检查这些目录。它们应该rwx
对您有权限,但---
对组和世界都有权限。
另一个问题可能是(但这种情况很少见)二进制ssh-add
文件设置了setuid
位,导致它以不同的用户身份运行,因此无权读取您的私钥。使用ls -lh $(which ssh-add)
检查此问题。
答案3
在这种情况下,要做的第一件事是使用-v
ssh 选项(添加详细),这样您就可以查看正在尝试哪些类型的身份验证方法以及结果是什么。这可能会提供有关可能出现错误的内容的微妙信息。然后你查看 Sybren 给出的答案