Como ssh para o servidor remoto usando uma chave privada?

61

Eu tenho dois servidores. Ambos os servidores estão no CentOS 5.6. Quero SSH do Servidor 1 para o Servidor 2 usando uma chave privada que tenho (Chave Privada OpenSSH SSH-2).

Eu não sei como fazer isso no unix. Mas o que eu fiz no Windows usando o Putty foi alimentar minha chave privada OpenSSH para putty-gen e gerar uma chave privada no formato PPK.

No entanto, eu estaria criando um script bash do servidor 1 que executaria alguns comandos no servidor 2 via SSH.

Como faço para o SSH para o Servidor 2 usando meu arquivo de chave privada do Servidor 1?

    
por Aivan Monceller 25.10.2011 / 21:24

4 respostas

54

Você precisa da sua chave pública SSH e precisará da chave privada ssh. Chaves podem ser geradas com ssh_keygen . A chave privada deve ser mantida no servidor 1 e a chave pública deve ser armazenada no servidor 2.

Isso é descrito na manpage do openssh, então vou citar muito disso. Você deve ler a seção 'Autenticação'. Além disso, o manual do openSSH deve ser realmente útil: link

Por favor, tenha cuidado com o ssh porque isso afeta a segurança do seu servidor.

De man ssh :

 ~/.ssh/identity
 ~/.ssh/id_dsa
 ~/.ssh/id_rsa
     Contains the private key for authentication.  These files contain
     sensitive data and should be readable by the user but not acces-
     sible by others (read/write/execute).  ssh will simply ignore a
     private key file if it is accessible by others.  It is possible
     to specify a passphrase when generating the key which will be
     used to encrypt the sensitive part of this file using 3DES.

 ~/.ssh/identity.pub
 ~/.ssh/id_dsa.pub
 ~/.ssh/id_rsa.pub
     Contains the public key for authentication.  These files are not
     sensitive and can (but need not) be readable by anyone.

Isso significa que você pode armazenar sua chave privada em seu diretório pessoal em .ssh. Outra possibilidade é dizer ao ssh através da opção de parâmetro -i para usar um arquivo de identidade especial. Também de man ssh :

 -i identity_file
     Selects a file from which the identity (private key) for RSA or
     DSA authentication is read.  The default is ~/.ssh/identity for
     protocol version 1, and ~/.ssh/id_rsa and ~/.ssh/id_dsa for pro-
     tocol version 2.  Identity files may also be specified on a per-
     host basis in the configuration file.  It is possible to have
     multiple -i options (and multiple identities specified in config-
     uration files).

Isto é para a chave privada. Agora você precisa introduzir sua chave pública no Servidor 2. Novamente uma citação de man ssh :

  ~/.ssh/authorized_keys
         Lists the public keys (RSA/DSA) that can be used for logging in
         as this user.  The format of this file is described in the
         sshd(8) manual page.  This file is not highly sensitive, but the
         recommended permissions are read/write for the user, and not
         accessible by others.

A maneira mais fácil de conseguir isso é copiar o arquivo para o Servidor 2 e anexá-lo ao arquivo authorized_keys:

scp -p your_pub_key.pub user@host:
ssh user@host
host$ cat id_dsa.pub >> ~/.ssh/authorized_keys

Autorização via chave pública deve ser permitida para o daemon ssh, veja man ssh_config . Geralmente isso pode ser feito adicionando a seguinte declaração ao arquivo de configuração:

PubkeyAuthentication yes
    
por 25.10.2011 / 21:43
13

Eu usei o ssh com a opção -i para adicionar sua chave aqui.

Se você quiser passar arg1, arg2 com o arquivo .sh, apenas passe-o após o arquivo .sh e use um espaço de uso para separá-lo.

ssh -i home/avr/new.pem [email protected] "/var/www/beta/betatolive.sh mmin 30"

    
por 27.05.2016 / 09:06
12

A primeira coisa que você precisa fazer é verificar se executou o comando keygen para gerar as chaves:

ssh-keygen -t rsa

Em seguida, use este comando para enviar a chave para o servidor remoto, modificando-o para corresponder ao nome do seu servidor.

cat ~/.ssh/id_rsa.pub | ssh user@hostname 'cat >> .ssh/authorized_keys'
    
por 03.08.2013 / 09:43
5

Anexe a chave pública ( id_[rd]sa.pub ) da sua máquina de origem (da qual você está saindo) ao arquivo ~/.ssh/authorized_keys do servidor de destino para o nome de usuário no qual você deseja ssh. Se você perdeu a chave pública, crie uma nova com ssh-keygen . Usando os argumentos padrão para isso deve estar ok para a maioria dos propósitos. Se você precisar de instruções mais detalhadas, existem milhares de tutoriais que você pode pesquisar no Google.

    
por 25.10.2011 / 21:40

Tags