Git

ssh 代理和超時

  • June 21, 2015

我正在使用腳本來更新我的系統:

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。

訣竅是ssh如果它嘗試進行密碼身份驗證,則立即失敗(因此總是只進行公鑰/私鑰身份驗證)。

您可以將環境變數設置GIT_SSH為 shell 腳本以將正常ssh命令擴展為 include -o "PasswordAuthentication no",但如果您通常不訪問git儲存庫所在的伺服器,您也可以設置 in ~/.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

引用自:https://unix.stackexchange.com/questions/211128