sshpass远程执行嵌套SCP命令出现Permission denied认证失败排查
链式跳转SCP跨服务器传输认证失败排查
需求背景
需搭建专用备份服务器归集30份分散在不同路径的业务文件,支持逐文件单独传输访问,目前在家庭测试环境开展预部署验证,遇到链式传输认证异常,已连续排查4天未定位根因。
已完成的基础配置
- 两台参与传输的服务器(test-server、linuxproject)之间已完成SSH密钥对生成、公钥互传的全流程配置
- 测试阶段已按要求放宽权限:业务文件目录最高设为760权限,
.ssh专属目录设为0770权限,两台服务器同步完成权限配置 - 全程未引入Kerberos或GSSAPI类认证依赖,仅使用原生SCP功能开展传输测试
异常表现
- 单步直连场景功能正常:手动登录test-server主机,直接执行SCP命令向linuxproject传输文件,全流程可正常完成
- 链式跳转场景认证失败:从当前工作主机通过
sshpass远程登录test-server后,链式触发SCP传输任务时出现认证报错 - 链式场景下基础命令执行无异常:远程触发的
touch longlist.txt等前置命令可正常在test-server执行,仅test-server向linuxproject发起的二次SSH连接环节认证失败
复现命令
[linuxproject@sysadmin ~]$ sshpass -p "abc12345" ssh test-server@192.168.1.26 " touch longlist.txt && scp longlist.txt linuxproject@192.168.1.18:/home/linuxproject"
报错日志输出
Permission denied, please try again. Permission denied, please try again. linuxproject@192.168.1.18: Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password). lost connection
调试日志定位的流程异常
从SCP的-v级别verbose日志可见,链式场景下test-server向linuxproject发起SSH连接时,所有认证分支均失败:
- GSSAPI认证阶段:无可用Kerberos凭据,流程直接中断
- 公钥认证阶段:客户端本地提供的SSH密钥被linuxproject目标服务器拒绝
- 密码认证阶段:非交互执行模式下无法打开
/dev/tty输入密码,多次重试后连接中断
核心根因
非交互SSH会话的环境路径偏差问题:
手动交互式登录test-server时,shell会依次加载.bash_profile、.bashrc里的自定义环境变量——很多用户会在这些文件里调整HOME路径、或者修改SSH客户端的默认密钥查找目录,这种场景下SCP可以正常定位到预先存放的私钥文件,完成公钥认证。
但当使用sshpass做非交互远程命令执行时,SSH进程不会加载这些用户级shell配置,会使用系统默认的路径规则查找私钥;如果默认路径下没有匹配的私钥文件,公钥认证就会被目标服务器拒绝,此时流程回退到密码认证分支,又因为非交互模式没有分配伪tty,没法打开/dev/tty接收密码输入,最终多次重试后连接中断。
可落地解决方案
- 方案1:在SCP命令中显式指定私钥路径,绕开默认路径查找逻辑
远程执行命令调整为:sshpass -p "abc12345" ssh test-server@192.168.1.26 "touch longlist.txt && scp -i /home/test-server/.ssh/id_rsa longlist.txt linuxproject@192.168.1.18:/home/linuxproject" - 方案2:给SSH远程连接强制分配伪终端,让非交互会话可以正常加载用户环境变量
原命令增加-t参数强制分配tty:sshpass -p "abc12345" ssh -t test-server@192.168.1.26 "touch longlist.txt && scp longlist.txt linuxproject@192.168.1.18:/home/linuxproject" - 方案3:在test-server的SSH全局配置中为目标主机绑定固定私钥路径,不依赖用户shell环境
在/etc/ssh/ssh_config中增加配置段:Host 192.168.1.18 IdentityFile /home/test-server/.ssh/id_rsa User linuxproject
内容的提问来源于stack exchange,提问作者Oren Rahav
相关产品推荐
相关产品推荐

