Como ssh adicionar uma chave SSH sem recriar uma nova instância do agente SSH?

2

Eu adiciono o seguinte no meu .bashrc

ssh-add ~/.ssh/id_rsa

então, quando eu abro uma nova aba no meu aplicativo shell / terminal (iTerm2 no macOS), ele automaticamente adiciona a identidade SSH usando o agente SSH e eu não preciso digitar manualmente a senha SSH nessa aba. Mas se eu tiver muitas abas, parece desnecessariamente ter muitas instâncias em execução de ssh-agent.

Existe uma maneira melhor de conseguir isso?

    
por qazwsx 01.11.2017 / 18:19

1 resposta

5

Parece que o seu problema é que você está iniciando uma nova invocação do agente em cada inicialização do shell (provavelmente em .bash_profile ou .bashrc ). Isso não é necessário, portanto, você deve encontrar essas chamadas do agente ssh e removê-las.

No OSX, geralmente há um agente ssh iniciado no momento da inicialização para a sua sessão de desktop. Por exemplo:

myhost:~)-> ps -ef | grep ssh-agent
  501   986     1   0 10:18AM ??         0:00.14 /usr/bin/ssh-agent -l
  501  2126   736   0  5:30PM ttys007    0:00.00 grep ssh-agent

Para acessá-lo, você precisa descobrir onde está o soquete de escuta, geralmente em /tmp/com.apple.launchd.<blah>/Listeners (onde <blah> é algum identificador alfanumérico aleatório. É provável que haja vários, mas você quer aquele que tem o socket 'Listeners' nele).

Quando você encontrar o soquete, poderá se conectar a ele usando a variável de ambiente SSH padrão, SSH_AUTH_SOCK . Por exemplo:

myhost:~)-> export SSH_AUTH_SOCK=/tmp/com.apple.launchd.1h2j3k4l5/Listeners
myhost:~)-> ssh-add ~/.ssh/id_rsa
Enter passphrase for ~/.ssh/id_rsa: <typing_here>
Identity added: ~/.ssh/id_rsa (~/.ssh/id_rsa)

Uma vez que isso é exportado para o shell, pode-se, neste momento, usar o comando ssh-add para fornecer sua senha de chave e adicionar uma chave ao agente. Você também pode ver outras opções que você pode querer explorar nas páginas de manual do agente ssh.

    
por 02.11.2017 / 15:08