You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SSH登录切换至sudo用户后无法写入authorized_keys文件

解决SSH写入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/.ssh
    
    正常输出应该包含drwx------(权限为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/.ssh
    
    如果所有者不是Sap1: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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 04:52:03