echo $? imprime 1 depois de executar o ssh-add

1

Estou tentando usar o SSH Agent Forwarding para configurar um script deploy no CentOS. Eu tenho uma chave pública copiada no arquivo authorized_keys em ~/.ssh do meu deploy user na máquina server . Eu sou capaz de fazer logon no servidor com o usuário de implantação sem um prompt de senha (e a senha do usuário de implantação está bloqueada, por exemplo, passwd -l deploy ).

Tenha em mente que meu diretório .ssh contém apenas o arquivo authorized_keys:

deploy@server $ ls
authorized_keys

Agora, preciso que o usuário de implantação obtenha acesso ao meu repositório git do servidor. A solução é SSH Agent Forwarding. Eu deveria ser capaz de acessar o repositório através do servidor executando a seguinte operação no servidor:

# List SSH keys that are loaded into the agent
deploy@server $ ssh-add -l
# Make sure they key is loaded if 'ssh-add -l' didn't show anything
deploy@server $ ssh-add
deploy@server $ ssh -A [email protected] 'git ls-remote [email protected]:capistrano/rails3-bootstrap-devise-cancan.git'

O problema é que o ssh-add não carrega a chave:

deploy@server $ exec ssh-agent bash
deploy@server $ ssh-add -l
The agent has no identities.
deploy@server $ ssh-add
deploy@server $ echo $?
=> 1

Imprime 1. Isso significa que houve um problema. Estou um pouco confuso porque a documentação afirma que podemos usar o encaminhamento de agentes SSH, então eu suponho que não precisamos de um id_rsa (chave privada) no diretório .ssh da implementação. Acabei de copiar a chave pública da máquina local para o arquivo authorized_keys do servidor e, em seguida, devo usar o SSH Agent Forwarding para autenticar o repositório git. No entanto, parece que o ssh-add requer que exista uma chave privada. A documentação nunca mencionou que tive que criar uma chave privada no meu servidor.

Onde estou indo errado?

    
por Donato 16.06.2015 / 19:45

1 resposta

3

Acho que você está errado ao assumir que precisa executar ssh-add no servidor .

Se sua máquina cliente (ou seja, a máquina que possui a chave privada correspondente à chave pública no arquivo authorized-keys no server ) iniciar a conexão ssh, ela deverá ativar o encaminhamento do agente de autenticação. Você pode fazer isso na linha de comando, especificando -A como argumento para ssh ou, em geral, editando /etc/ssh/ssh_config ou ~/.ssh/config (para o usuário que está fazendo a conexão com server ), especificando:

ForwardAgent yes

Por motivos de segurança, isso normalmente é definido como no .

A execução de ssh-add em server não é necessária. A razão pela qual sai com 1 é que ele não encontra chaves privadas para adicionar (e encaminhar). Se você executar ssh-add na máquina do cliente (como o usuário que faz a conexão), você verá linhas parecidas com:

 Identity added: /home/your_user/.ssh/id_rsa

Esse tipo de arquivo não está disponível em ~/deploy/.ssh na máquina server

E você também precisa garantir que seu servidor git tenha sua chave pública instalada.

    
por 16.06.2015 / 20:30

Tags