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?
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
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"
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'
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.
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.