Git
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。
訣竅是
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