desarrollo-web-br-bd.com

¿Cómo ssh al servidor remoto usando una clave privada?

Tengo dos servidores Ambos servidores están en CentOS 5.6. Quiero SSH del Servidor 1 al Servidor 2 usando una clave privada que tengo (OpenSSH SSH-2 Private Key).

No sé cómo hacerlo sobre Unix. Pero lo que hice en Windows usando PuTTY fue alimentar mi clave privada OpenSSH a PuTTY-gen y generar una clave privada en formato PPK.

Sin embargo, estaría creando un script bash desde el servidor 1 que ejecutará algunos comandos en el servidor 2 a través de SSH.

¿Cómo hago SSH al servidor 2 usando mi archivo de clave privada del servidor 1?

82
Aivan Monceller

Necesita su clave pública SSH y necesitará su clave privada ssh. Las claves se pueden generar con ssh-keygen. La clave privada debe mantenerse en el Servidor 1 y la clave pública debe almacenarse en el Servidor 2.

Esto se describe completamente en la página de manual de openssh, por lo que citaré mucho. Debería leer la sección 'Autenticación'. También el manual de openSSH debería ser realmente útil: http://www.openssh.org/manual.html

Tenga cuidado con ssh porque esto afecta la seguridad de su servidor.

Desde 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.

Esto significa que puede almacenar su clave privada en su directorio de inicio en .ssh. Otra posibilidad es decirle a ssh a través de -i parámetro para usar un archivo de identidad especial. También 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).

Esto es para la clave privada. Ahora necesita introducir su clave pública en el Servidor 2. Nuevamente, una cita 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.

La forma más fácil de lograr esto es copiar el archivo al Servidor 2 y agregarlo al archivo autorizado_claves:

scp -p your_pub_key.pub [email protected]:
ssh [email protected]
host$ cat id_dsa.pub >> ~/.ssh/authorized_keys

Se debe permitir la autorización mediante clave pública para el demonio ssh, consulte man ssh_config. Por lo general, esto se puede hacer agregando la siguiente declaración al archivo de configuración:

PubkeyAuthentication yes
70
echox

Usé ssh con la opción -i para agregar su clave aquí.

Si desea pasar arg1, arg2 con el archivo .sh, simplemente páselo después del archivo .sh y use un espacio de uso para separarlo.

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

25
Avinash Raut

Lo primero que deberá hacer es asegurarse de haber ejecutado el comando keygen para generar las claves:

ssh-keygen -t rsa

Luego use este comando para empujar la tecla al servidor remoto, modificándola para que coincida con el nombre de su servidor.

cat ~/.ssh/id_rsa.pub | ssh [email protected] 'cat >> .ssh/authorized_keys'
18
Anubhav Singh

Agregar la clave pública (id_[rd]sa.pub) para su máquina fuente (desde donde está enviando mensajes) a la ~/.ssh/authorized_keys archivo del servidor de destino para el nombre de usuario en el que desea ssh. Si ha perdido la clave pública, querrá crear una nueva con ssh-keygen. Usar los argumentos predeterminados para eso debería estar bien para la mayoría de los propósitos. Si necesita instrucciones más detalladas, hay miles de tutoriales que puede buscar en Google.

8
Kevin

ssh-copy-id: use claves disponibles localmente para autorizar inicios de sesión en una máquina remota

Utilizar ssh-copy-id en el Servidor 1, suponiendo que tenga el par de claves (generado con ssh-keygen):

ssh-copy-id -i ~/.ssh/id_rsa [email protected]_hostname

Ahora debería poder ssh en el Servidor 2 con ssh usando la clave privada

ssh -i ~/.ssh/id_rsa [email protected]_hostname

De hecho, si marca cat ~/.ssh/authorized_keys en el Servidor 2, verá que la clave pública se adjunta para usted.

6
Sida Zhou