SSH登录远程服务器执行git pull无用户名密码提示如何解决
问题原因
通过<< EOF向SSH传递远程命令的默认模式下,SSH不会为远程会话分配伪终端(pty),远程运行的git无法将交互式凭据输入提示透传到本地终端,因此会直接跳过输入环节执行失败。
解决方案
两种方案均仅需修改本地脚本,无需调整远程服务器配置:
- 方案1:给SSH命令添加
-t参数强制分配伪终端,是最简便的适配方式
ssh -t url@location << EOF --other commands-- git pull --other commands-- EOF
如果部分环境下单个-t分配伪终端失败,可改为ssh -tt url@location强制分配。
- 方案2:将命令作为SSH参数直接传递,适配性更强
如果调整here-document写法不生效,可直接把整段命令作为SSH的末尾参数传递,配合-t使用稳定性更高:
ssh -t url@location " --other commands-- git pull --other commands-- "
如果命令中包含双引号,需要提前用反斜杠\做转义处理。
内容的提问来源于stack exchange,提问作者wjmccann
相关产品推荐
相关产品推荐

