Fazendo um ssh-add em ssh / slogin se a chave não estiver em ssh-agent?

9

Quando eu estiver executando o Gnome, o ssh-agent executará o ssh-add no slogin / ssh se a identidade não estiver carregada. Eu quero imitar esse comportamento em shells remotas, mas tudo o que eu acho sugere rodar ssh-add no login. Eu só quero rodar o ssh-add se eu rodar slogin / ssh no shell remoto, não toda vez que eu fizer login.

    
por Pete Ashdown 18.02.2011 / 18:55

3 respostas

9

Eu desenvolvi uma solução para isso através do shell bash.

Adicionar a .bashrc:

check-ssh-add() {
if [ "$DESKTOP_SESSION" == "" ]; then
  if [[ 'ssh-add -l' != *id_?sa* ]]; then 
    ssh-add -t 5h  ## 5 hour ssh-agent expiration
  fi
fi
}

slogin() {
check-ssh-add
/usr/bin/slogin $@
}

ssh() {
check-ssh-add
/usr/bin/ssh $@
}

scp() {
check-ssh-add
/usr/bin/scp $@
}

sftp() {
check-ssh-add
/usr/bin/sftp $@
}
    
por Pete Ashdown 20.02.2011 / 20:46
6

Existe um jeito ainda mais simples. ssh-add -l retorna verdadeiro (0) se houver chaves e falso (1) caso contrário, sua primeira função pode ser substituída por:

check-ssh-add() {
  if ! ssh-add -l >/dev/null; then
      ssh-add -t 5h
  fi
}

    
por Relsqui 18.12.2013 / 12:23
0

Ainda mais simples na parte «this is an interactive session» adicione

ssh-add -l &> /dev/null || ssh-add ~/.ssh/my_id
    
por user1458574 16.03.2015 / 15:25

Tags