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

从Kubernetes Pod SSH连接远程主机出现Permission denied错误如何解决?

SSH无密码短语密钥认证失败常见原因
  • 远程SSH服务端配置限制:OpenSSH 7.2及以上版本支持PubkeyAuthOptions no-empty-passphrases配置项,开启后会直接拒绝所有无密码短语的私钥认证请求,部分云服务商或安全加固方案会默认开启该配置。你本地主机能登录可能是因为本地出口IP在服务端的Match Address信任规则内,规则豁免了无密码短语限制,而Pod的出口IP不在信任范围内。
  • 密钥算法兼容问题:容器内的SSH客户端版本与本地版本不一致,远程服务端对无密码密钥额外限制了可用算法,比如禁用了弱ssh-rsa算法,你使用的无密码密钥是RSA类型且客户端默认用ssh-rsa算法发起请求被拒绝,而带密码短语的密钥是ed25519等强算法类型,符合服务端要求。
  • 容器内私钥属性异常:你配置的SecretdefaultMode: 256对应八进制权限为0400,权限本身符合SSH要求,但如果容器内执行SSH命令的用户不是root,挂载的私钥属主为root的话,普通用户无法读取私钥会导致认证失败,你可以在容器内执行ls -l /etc/ssh/hetzner_box确认权限和属主。
  • 客户端默认配置限制:容器内/etc/ssh/ssh_config全局配置可能设置了针对无密码密钥的限制规则,比如要求私钥必须有密码短语才能用于认证。
排查与解决方法
  • 给SSH命令加-v参数打印详细调试日志,确认认证失败的具体环节:
    ssh -v -i /etc/ssh/hetzner_box admin@123.123.123.123
    
  • 登录远程服务器查看SSH认证日志定位拒绝原因,Debian/Ubuntu路径为/var/log/auth.log,CentOS/RHEL路径为/var/log/secure。
  • 如果确认是服务端no-empty-passphrases限制,可修改/etc/ssh/sshd_config注释掉对应配置项,执行systemctl restart sshd重启服务生效。
  • 如果是算法兼容问题,可在SSH命令中指定允许的算法:
    ssh -i /etc/ssh/hetzner_box -o PubkeyAcceptedKeyTypes=+ssh-rsa admin@123.123.123.123
    
  • 如果是Pod出口IP不在信任范围,可将Pod的出口IP段添加到服务端sshd_config的信任规则中。

内容的提问来源于stack exchange,提问作者MFranc

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 19:57:00