내 시스템을 업데이트하기 위해 스크립트를 사용하고 있습니다.
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