SSH登录切换至sudo用户后无法写入authorized_keys文件
我来帮你搞定这个权限拒绝的麻烦!你遇到的bash: /home/techm/tmsys/Sap1/.ssh/authorized_keys: Permission denied错误,大多是因为SSH对.ssh目录和authorized_keys文件的权限要求非常严格,或者你写入的方式没用到正确的权限。咱们一步步来排查解决:
1. 检查并修复目录/文件的权限
SSH要求.ssh目录只能被所有者访问,authorized_keys文件也必须严格限制权限:
- 首先检查
.ssh目录的权限:
正常输出应该包含ls -ld /home/techm/tmsys/Sap1/.sshdrwx------(权限为700),如果不是,执行以下命令修改:sudo chmod 700 /home/techm/tmsys/Sap1/.ssh - 接着检查
authorized_keys文件的权限:
正常输出应该包含ls -l /home/techm/tmsys/Sap1/.ssh/authorized_keys-rw-------(权限为600),不符合的话修改:sudo chmod 600 /home/techm/tmsys/Sap1/.ssh/authorized_keys
2. 确认所有者是否正确
.ssh目录和里面的文件必须属于Sap1用户,否则会有权限问题:
- 检查所有者信息:
如果所有者不是ls -ld /home/techm/tmsys/Sap1/.sshSap1:Sap1,执行以下命令递归修改:sudo chown -R Sap1:Sap1 /home/techm/tmsys/Sap1/.ssh
3. 修正写入命令的方式
如果你是用类似sudo echo "公钥内容" >> /home/techm/tmsys/Sap1/.ssh/authorized_keys的命令,其实重定向操作是由当前普通用户的shell执行的,并没有用到sudo权限,所以会报错。推荐两种正确的写法:
- 方法一:切换到
Sap1用户再写入:sudo -u Sap1 bash -c 'echo "你的公钥字符串" >> /home/techm/tmsys/Sap1/.ssh/authorized_keys' - 方法二:用
tee命令借助sudo权限追加内容:
这里的echo "你的公钥字符串" | sudo tee -a /home/techm/tmsys/Sap1/.ssh/authorized_keys-a参数表示追加,避免覆盖原有内容。
按照上面的步骤操作后,应该就能顺利写入authorized_keys文件了。
内容的提问来源于stack exchange,提问作者Sourav Mukherjee
相关产品推荐
相关产品推荐

