Como exportar a chave pública do meu SSH?

12

Eu preciso configurar sessões ssh entre dois servidores e não quero que o script preencha o nome de usuário e a senha toda vez.

No entanto, não consigo descobrir de onde o servidor SSH está usando sua configuração.

bash-2.05# ssh -V
Sun_SSH_1.1, SSH protocols 1.5/2.0, OpenSSL 0x0090700f

Eu tenho arquivos de certificado em ambos / etc / ssh / e ~ / .ssh /. Eu só consigo encontrar um arquivo de configuração para o SSH e ele está em / etc / ssh / ssh_config, mas ele não contém dados (tudo está comentado).

Alguém sabe como posso descobrir onde o certificado está armazenado ou como posso exportá-lo para que eu possa transferi-lo para o outro servidor? Eu esperava que os arquivos de configuração me dessem a resposta, mas eles fornecem pouca ou nenhuma ajuda.

    
por Chris Dale 07.06.2011 / 11:56

3 respostas

16

Assumindo que você quer dizer autenticação de chave pública em um nível de usuário por 'certificado' e você criou-os usando ssh-keygen com o local padrão, eles devem estar no lugar onde o seu cliente ssh irá encontrá-los. A chave consiste em uma parte privada, normalmente armazenada em ~/.ssh/id_rsa e uma parte pública em ~/.ssh/id_rsa.pub . O último terá que ser transferido para o servidor remoto, geralmente para ~/.ssh/authorized_keys .

A maneira mais fácil de transferir a chave para outro servidor é usar ssh-copy-id com a máquina de destino. Se você usou o local padrão na criação, essa chave será usada automaticamente.

Note que /etc/ssh/ssh_config é para o cliente. No servidor, você terá que olhar para /etc/ssh/sshd_config . Em sua configuração, ambos os servidores servirão como ssh-client e ssh-server, portanto, você teria que examinar os dois arquivos nas duas extremidades.

    
por 07.06.2011 / 12:12
2

Você precisa encontrar a chave pública ssh para o usuário que será o usuário de login do script.

Por exemplo, se eu tiver serverA e serverB, faria o seguinte.

sudo adduser scriptrunner
...
sudo su - scriptrunner
ssh-keygen
...
cat .ssh/id_rsa.pub
ssh-rsa AAAAB3Nza...... scriptrunner@serverA

faça algo similar no ServerB

Em seguida, em serverA, esguinche a chave pública do usuário scriptrunner do servidorB em /home/scriptrunner/.ssh/authorized_keys

e faça o oposto no serverB (usando o usuário scriptrunner do serverA em authorized_keys em /home/scriptrunner/.ssh/authorized_keys on serverB)

Então você deve ser capaz de fazer ssh scriptrunner@serverA do servidorB usando a chave e vice-versa.

Você também pode usar ssh-copy-id para fazer o bit authorized_keys.

    
por 07.06.2011 / 12:12
1

Para estabelecer uma conexão ssh com autenticação de chave pública, o usuário que inicia a conexão precisa ter um par de chaves pública / privada. Em muitas distribuições linux, essas chaves não são geradas por padrão e precisam ser geradas pelo próprio usuário (ou pelo administrador em seu nome).

Se você estiver logado como usuário relevante, vá para o seu diretório pessoal e execute

ssh-keygen

Aceite todos os padrões, e um novo par de chaves será criado em ~ / .ssh / id_rsa e ~ / .ssh / id_rsa.pub. Agora, copie a chave pública e cole-a no arquivo ~ / .ssh / authorized_keys da conta de usuário de destino na máquina de destino. Então ative a autenticação de chave pública na máquina de destino (em / etc / ssh / sshd_config) e você deve estar pronto.

NOTA : há muitas armadilhas possíveis nesse processo quando você faz isso pela primeira vez. Todas as permissões precisam estar corretas e os arquivos precisam estar nos lugares certos. Provavelmente é melhor se você seguir um HowTo como este .

    
por 07.06.2011 / 12:20