Como exportar a chave pública do meu SSH?

12

Preciso configurar sessões ssh entre dois servidores e não quero que o script preencha o nome de usuário e a senha todas as vezes.

No entanto, parece que 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 o arquivo de arquivos de certificado em / etc / ssh / e ~ / .ssh /. Só consigo encontrar um arquivo de configuração para SSH e ele está em / etc / ssh / ssh_config, mas 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 transferi-lo para outro servidor? Eu esperava que os arquivos de configuração me dessem a resposta, mas eles fornecem pouca ou nenhuma ajuda.

Chris Dale
fonte

Respostas:

17

Supondo que você queira dizer autenticação de chave pública no nível do usuário por 'certificado' e que você os criou usando ssh-keygeno local padrão, eles devem estar no local onde o ssh-client os encontrará. A chave consiste em uma parte privada, geralmente armazenada ~/.ssh/id_rsae 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 é usando ssh-copy-ida máquina de destino. Se você usou o local padrão na criação, essa chave será usada automaticamente.

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

Carsten Thiel
fonte
Tenho que trabalhar. Obrigado. A única coisa que eu precisei fazer foi extra no meu cliente, eu tive que especificar o parâmetro -i (identity) apontando para a chave privada.
Chris Dale
2

Você precisa encontrar a chave pública ssh para o usuário que será o usuário de logon 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

então faça algo semelhante no ServerB

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

e faça o oposto no serverB (usando o usuário do scriptA do serverA /home/scriptrunner/.ssh/authorized_keysem protected_keys no serverB)

Então você deve conseguir fazer isso ssh scriptrunner@serverAno serverB usando a chave e vice-versa.

Você também pode usar ssh-copy-ido bit autorizado_chave.

Tom O'Connor
fonte
1

Para estabelecer uma conexão ssh com a 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ê está 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 / allowed_keys da conta de usuário de destino na máquina de destino. Em seguida, ative a autenticação de chave pública na máquina de destino (em / etc / ssh / sshd_config) e você deve estar pronto.

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

wolfgangsz
fonte