ssh-agent e timeout

1

Estou usando um script para atualizar meu sistema:

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

Meu problema é que, se /opt/updater/.ssh/.pk não for legível ou a chave ssh for alterada, o processo ficará assim:

  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:

Como posso resolver isso de ficar preso? A expectativa não é permitida neste sistema.

    
por Valeriy Solovyov 21.06.2015 / 13:30

1 resposta

3

O truque é fazer com que ssh falhe imediatamente se tentar fazer a autenticação por senha (portanto, sempre faça somente autenticação de chave pública / privada).

Você pode definir a variável de ambiente GIT_SSH como um script de shell para estender o comando normal ssh para incluir -o "PasswordAuthentication no" , mas se você não acessar normalmente o servidor no qual o repositório git está localizado, também pode definir em ~/.ssh_config :

Host server_with_remote_git_repo_name
    PasswordAuthentication no

e, em seguida, sobrescreva que, se você precisar acessar server_with_remote_git_repo_name com uma senha, fazendo ssh -o "PasswordAuthentication yes" server_with_remote_git_repo_name

    
por 21.06.2015 / 13:52

Tags