Desbloqueio da chave SSH privada (com Cygwin / X11) quando não há shell local envolvido?

1

Instalei o Cygwin / X11, incluindo openssh . Eu configurei um par de chaves pública / privada. Eu instalei a chave pública em ~/.ssh/authorized_keys do RemoteHost.

Configurei o Cygwin / X11 (via ~/.XWinrc ) para fornecer um item de menu que abre um shell RemoteHost em um terminal local:

menu root {
    RemoteShell    exec    "/bin/xterm.exe -e /usr/bin/ssh -Yl <user> RemoteHost"
}

RootMenu root

Eu quero ser consultado para a frase secreta da minha chave privada quando este item de menu for selecionado na primeira vez. Eu faço não quer ser consultado em chamadas subseqüentes.

Como não há shell local envolvido, ou seja, não posso fazer nada (como configurar ssh_agent ou keychain ) em ~/.bash_profile , estou um pouco perdido aqui. Também não há shell no qual insira a frase-chave.

Como faço para desbloquear minha chave SSH privada quando não há shell local envolvido?

    
por DevSolar 22.12.2016 / 15:26

1 resposta

1

  • Você pode iniciar ssh-agent no shell subsequente e ao novo exportar a variável de ambiente (por exemplo, de um arquivo criado no primeiro)

    ssh-agent > ~/.ssh_agent_env
    source ~/.ssh_agent_env
    
  • Você pode receber uma senha usando um prompt da GUI, que é fornecido para ssh pela variável de ambiente SSH_ASKPASS . No Linux, geralmente gnome-askpass ou similar. Haverá algo semelhante no cygwin também.

  • Existe a opção AddKeysToAgent , que adicionará as chaves usadas recentemente à execução ssh-agent para obter o que você precisa.

Ambos precisariam de algumas codificações / verificações antes de chamar o% final ssh , por exemplo, um script bash que você pode chamar no RemoteShell exex /path/to/my/script.sh , por exemplo:

#!/bin/bash
ps aux | grep ssh-agent | grep -v grep
if [ "$?" = "1" ]; then
  # start a new agent (in a background) and store its environent
  ssh-agent > ~/.ssh_agent_env
end
# load existing ssh-agent connection
source ~/.ssh_agent_env

/bin/xterm.exe -e /usr/bin/ssh -oAddKeysToAgent=yes -Yl <user> RemoteHost
# or do whatever magic you want
    
por 22.12.2016 / 20:18