¿Cómo exportar la clave pública de mi SSH?

12

Necesito configurar sesiones ssh entre dos servidores y no quiero que el script complete el nombre de usuario y la contraseña cada vez.

Sin embargo, parece que no puedo averiguar de dónde está usando el servidor SSH su configuración.

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

Tengo un archivo de archivos de certificados en / etc / ssh / y ~ / .ssh /. Solo puedo encontrar un archivo de configuración para SSH y está en / etc / ssh / ssh_config, pero no contiene datos (todo está comentado).

¿Alguien sabe cómo puedo averiguar dónde está almacenado el certificado o cómo puedo exportarlo para poder transferirlo al otro servidor? Esperaba que los archivos de configuración me dieran la respuesta, pero proporcionan poca o ninguna ayuda.

Chris Dale
fuente

Respuestas:

17

Suponiendo que se refiere a la autenticación de clave pública a nivel de usuario por 'certificado' y que los creó utilizando ssh-keygenla ubicación predeterminada, deben estar en el lugar donde su cliente ssh los encontrará. La clave consta de una parte privada, generalmente almacenada en ~/.ssh/id_rsay una parte pública en ~/.ssh/id_rsa.pub. El último tendrá que ser transferido al servidor remoto, generalmente a ~/.ssh/authorized_keys.

La forma más fácil de transferir la clave a otro servidor es usar ssh-copy-idla máquina de destino. Si usó la ubicación predeterminada en la creación, esta clave se usará automáticamente.

Tenga en cuenta que eso /etc/ssh/ssh_configes para el cliente. En el servidor tendrá que mirar /etc/ssh/sshd_config. En su configuración, ambos servidores servirán como ssh-client y ssh-server, por lo que tendrá que mirar ambos archivos en ambos extremos.

Carsten Thiel
fuente
Lo tengo funcionando. Gracias. Lo único que tenía que hacer extra era que en mi cliente tenía que especificar el parámetro -i (identidad) apuntando a la clave privada.
Chris Dale
2

Debe encontrar la clave pública ssh para el usuario que será el usuario de inicio de sesión para el script.

Por ejemplo, si tengo el servidor A y el servidor B, haría lo siguiente.

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

entonces haga algo similar en ServerB

Luego, en el servidor A, arroje la clave pública del usuario de scriptrunner del servidor B en /home/scriptrunner/.ssh/authorized_keys

y hacer lo contrario en el servidor B (utilizando el usuario de scriptrunner del servidor A /home/scriptrunner/.ssh/authorized_keysen claves_autorizadas en el servidor B)

Entonces debería poder hacerlo ssh scriptrunner@serverAdesde el servidor B usando la clave, y viceversa.

También puede utilizar ssh-copy-idpara hacer el bit autorizado de claves.

Tom O'Connor
fuente
1

Para establecer una conexión ssh con autenticación de clave pública, el usuario que inicia la conexión debe tener un par de claves pública / privada. En muchas distribuciones de Linux, estas claves no se generan por defecto y deben ser generadas por el propio usuario (o por el administrador en su nombre).

Si ha iniciado sesión como usuario relevante, vaya a su directorio de inicio y ejecute

ssh-keygen

Acepte todos los valores predeterminados y se creará un nuevo par de claves en ~ / .ssh / id_rsa y ~ / .ssh / id_rsa.pub. Ahora copie la clave pública y péguela en el archivo ~ / .ssh / Authorized_keys de la cuenta de usuario de destino en la máquina de destino. Luego habilite la autenticación de clave pública en la máquina de destino (en / etc / ssh / sshd_config) y debería estar listo.

NOTA : hay muchos posibles obstáculos en este proceso cuando lo hace por primera vez. Todos los permisos deben ser correctos y los archivos deben estar en los lugares correctos. Probablemente sea mejor si sigues un HowTo como este .

wolfgangsz
fuente