chaves ssh ssh-agent bash e ssh-add

28

Eu sou novo em chaves ssh. Alguém pode explicar como ssh-agent bashe ssh-addfunciona?

Eu preciso entender seus internos no futuro.

maneeshshetty
fonte
Você já experimentou o principal hit do Google para algum desses termos?
Daniel Beck
Sim eu fiz. Não obtive nenhuma informação útil. Meu bad
maneeshshetty 16/05

Respostas:

44

Um agente é um programa que mantém suas chaves na memória para que você só precise desbloqueá-las uma vez , e não sempre. O ssh-agent faz isso para chaves SSH.

Os métodos usuais para iniciar o ssh-agent são:

  • eval `ssh-agent`- isso executa o agente em segundo plano e define as variáveis ​​de ambiente apropriadas para a instância atual do shell.

    ( ssh-agent , quando iniciado sem argumentos, gera comandos para serem interpretados pelo seu shell.)

  • exec ssh-agent bash- inicia uma nova instância do bashshell, substituindo a atual.

    (Com um ou mais argumentos, o ssh-agent não gera nada, mas inicia o comando especificado: nesse caso, o bashshell, mas tecnicamente poderia ser qualquer coisa.)

    Às vezes, o segundo método é preferido, pois mata automaticamente o ssh-agent quando você fecha a janela do terminal. (Ao iniciar eval, o agente permaneceria em execução, mas inacessível.)

No entanto, isso inicia apenas um agente vazio. Para realmente torná-lo útil, você precisa usar o ssh-add , que desbloqueia suas chaves (geralmente ~/.ssh/id_*) e as carrega no agente, tornando-as acessíveis às conexões ssh ou sftp .

gravidade
fonte
3
Existe uma maneira de iniciar o ssh-agent em várias sessões do bash, uma vez?
Asim
9

Além disso, convém adicionar algumas chaves no início da sessão.

Edite seu ~/.bashrcarquivo e adicione:

ssh-add &>/dev/null || eval `ssh-agent` &>/dev/null  # start ssh-agent if not present
[ $? -eq 0 ] && {                                     # ssh-agent has started
ssh-add ~/.ssh/your_private.key1 &>/dev/null        # Load key 1
ssh-add ~/.ssh/your_private.key2 &>/dev/null        # Load key 2
}

Verifique suas chaves com ssh-add -l

Você pode parar a sessão atual do ssh-agent com ssh-agent -k

Algo a saber sobre ssh-agent e .bashrc é não carregar muitas chaves. O número padrão de tentativas para o daemon ssh é limitado a 6. Isso pode ser modificado /etc/ssh/sshd_configcom o MaxAuthTriesvalor

user1293603
fonte
1
E a senha da chave privada ao iniciar ssh-addcom "&"? Você está assumindo que os arquivos de chave privada não estão protegidos?
Luciano
O código acima solicita a senha duas vezes, uma vez ao verificar se o ssh-agent está disponível e outra vez ao carregar a chave privada.
Tapan Chandra 25/01