ssh-代理和超时

ssh-代理和超时

我正在使用脚本来更新我的系统:

cd /opt/
chmod 600 /opt/updater/.ssh/.pk
ssh-agent bash -c 'ssh-add /opt/updater/.ssh/.pk; git stash; git pull origin master'
/opt/updater/bin/updater.sh

我的问题是,如果/opt/updater/.ssh/.pk我们不可读或 ssh-key 被更改,该过程将像这样卡住:

  ssh-agent bash -c 'ssh-add /opt/RDE/rdeupdater/.ssh/.pk; git stash; git pull origin master;EX=$?;echo "-$EX" '
/opt/RDE/rdeupdater/.ssh/.pk: No such file or directory
No local changes to save
user@git's password:

我该如何解决这个问题?该系统不允许使用 Expect。

答案1

诀窍是,ssh如果它尝试进行密码身份验证,就会立即失败(因此始终只进行公钥/私钥身份验证)。

您可以将环境变量设置GIT_SSH为 shell 脚本,以将普通ssh命令扩展为 include -o "PasswordAuthentication no",但如果您通常不访问git存储库所在的服务器,也可以设置~/.ssh_config

Host server_with_remote_git_repo_name
    PasswordAuthentication no

然后覆盖它,如果你需要server_with_remote_git_repo_name使用密码访问,通过这样做ssh -o "PasswordAuthentication yes" server_with_remote_git_repo_name

相关内容