私のシステムを更新するためにスクリプトを使用しています。
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キーが変更されたりすると、プロセスが次のように中断されることです。
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
シェルスクリプトに設定してssh
一般的なコマンドを含めるように拡張できますが、通常はリポジトリを含むサーバー-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