我按照以下步骤在我的服务器上设置公钥/私钥集:
通过在 Linode 上逐个输入以下命令来修改公钥的权限。将 example_user 替换为您的用户名。
chown -R example_user:example_user .ssh
chmod 700 .ssh
chmod 600 .ssh/authorized_keys
但当我做第一行时
chown -R david:david .ssh
我收到错误信息:
changing ownership of '.ssh/authorized_keys': Operation not permitted
我已按照指南的步骤进行操作,但由于我使用的是 Windows,因此我必须使用 Windows scr 来上传公钥,而不是使用 Unix 命令行。
以下是文件信息位:
File: `.ssh/authorized_keys'
Size: 294 Blocks: 8 IO Block: 4096 regular file
Device: EDITED OUT Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2013-03-17 16:32:06.000000000 +0000
Modify: 2013-03-17 16:32:06.000000000 +0000
Change: 2013-03-17 19:06:14.000000000 +0000
答案1
看起来您没有权限更改该文件的所有权。我猜,无论您从哪个文件系统传输文件,都有不同类型的权限,这些权限没有正确传输,最终将文档的所有权交给了 root。再次尝试使用相同的 chown 命令sudo
(例如,sudo chown -R david:david /path/to/.ssh
)。每当使用带有 的命令时sudo
,最好使用绝对路径(例如,/home/david/.ssh
)而不是相对路径(./.ssh
)。
答案2
就我的情况而言:
我尝试过
lsattr authorized_keys
,并且取得了 成果
-----a-------e-- authorized_keys
。
A这里的意思是仅追加。
使用chattr -a authorized_keys
删除A使其正常。
答案3
su -c "chown david:david ~david/.ssh/authorized_keys"
此时系统会要求您输入 root 密码,希望您知道这台机器的 root 密码。否则,由于缺少 sudo,您将面临艰难的挑战。
答案4
AD2020-我在更改 .ssh 的权限和所有权时遇到了类似的问题,我无法将我的 rsa 密钥推送到 github。
在先前答案的帮助下,我理清了思路:
sudo chown -R user:user .ssh | chmod 700 .ssh | chmod 600 /home/user/.ssh/id_rsa.pub
在那之后:
〜/.ssh-ls -la
git push -u origin master
并且它有效:)