Eu li a definição oficial:
O ssh-agent é um programa para armazenar chaves privadas usadas para autenticação de chave pública (RSA, DSA, ECDSA). A idéia é que o ssh-agent seja iniciado no início de uma sessão X ou de sessão de logon e todas as outras janelas ou programas sejam iniciados como clientes do programa ssh-agent. Através do uso de variáveis de ambiente, o agente pode ser localizado e usado automaticamente para autenticação ao efetuar login em outras máquinas usando o ssh (1).
"..um programa para armazenar chaves privadas .." - IMHO - chaves ssh são geradas pelo usuário com o comando ssh-keygen e armazenadas de forma simples e direta em ~ / .ssh - por que preciso de um daemon para armazenar essas chaves? Como exatamente eles os mantêm de qualquer maneira - eles não são armazenados apenas no .ssh?
"são iniciados como clientes do programa ssh-agent" - não entendi. Onde alguém precisaria disso? Eu costumo usar ssh assim:
ssh -i ~/.ssh/private_key_name username@hostname
O que exatamente significa manual com "clientes" - quais clientes? Você não apenas executa o comando ssh do terminal para conectar-se - quais outros clientes existem e por que eles não podem simplesmente usar um caminho para esse arquivo privado ssh, assim como o comando ssh?
~/.ssh/config
'sIdentityFile
opção é boa para, com ou sem o agente~/.ssh/config
qual chave usar para qual host remoto, para que ele saiba exatamente qual precisa.ssh-agent
não é necessário se uma chave privada não estiver protegida por uma senha.O benefício
ssh-agent
é que você só precisa digitar sua senha uma vez. Se sua chave RSA privada não estiver criptografada com uma senha, o ssh-agent não será necessário. Ossh
comando seria um exemplo de um cliente.fonte
Se você estiver rotineiramente
ssh
em uma variedade de máquinas diferentes, cada uma com sua própria chave e senha, a execuçãossh-agent
permitirá digitar a senha para cada chave uma vez 1 no início da sessão e você poderá se autenticar em cada máquina quantas vezes como quiser, sem precisar digitar novamente sua senha.Um benefício adicional é que, conforme a
man
página, o agente nunca envia uma chave privada pelo canal de solicitação; portanto, se você estiver pulando entre caixas diferentes, suas chaves privadas serão protegidas.1 Você pode definir o
life
tempo em que as chaves são mantidas no agente.fonte
O artigo da Wikipedia provavelmente tem a melhor descrição:
Novamente, literalmente, no artigo da Wikipedia:
Normalmente, ele é inserido nos arquivos rc de um sistema ou do usuário, como
$HOME/.bashrc
ou$HOME/.profile
(para shells bash), para que as variáveis de ambientessh-agent
definidas sejam incorporadas completamente ao seu ambiente.No meu sistema Fedora 14, ele é iniciado muito cedo como parte do subsistema X11. Neste arquivo
/etc/X11/xinit/xinitrc-common
,:A variável
$SSH_AGENT
é então usada em outros scripts de inicialização do X11, como aqui/etc/X11/xinit/Xclients
:Ao incorporá-lo aqui, as seguintes variáveis de ambiente estão sendo definidas como parte de um shell pai, portanto, todos os filhos bifurcados também devem tê-los, por exemplo:
Há um pouco mais de complexidade nisso, mas, em poucas palavras, é basicamente isso que está acontecendo
ssh-agent
.Por exemplo, no GNOME,
ssh-agent
é realmente iniciado por usuário como um aplicativo de inicialização:TL; DR
Resumindo,
ssh-agent
existe para que, quando suas chaves ssh forem necessárias, você só precise desbloqueá-las uma vez com a senha (supondo que elas tenham uma) e, a partir de então, elas estejam disponíveis na forma descriptografada na memória (RAM).fonte
"são iniciados como clientes no programa ssh-agent" refere-se à idéia de que o ssh-agent é iniciado durante a inicialização da sessão de login (local) para que todos os programas obtenham as variáveis de ambiente
$SSH_AGENT_PID
e$SSH_AUTH_SOCK
que sejam necessárias para conectar o agente.Outra vantagem de remover a manipulação de chave privada do ssh é que o ssh-agent pode ser substituído pelo gpg-agent. Assim, você pode usar chaves OpenPGP (com capacidade de autenticação) para SSH. Essa é uma boa solução para chaves OpenPGP em um cartão inteligente.
fonte