GNU/Linux >> Tutoriales Linux >  >> Linux

Cómo realizar SSH y SCP sin contraseña de SSH2 a OpenSSH

En nuestros artículos anteriores, discutimos cómo configurar la autenticación basada en clave ssh para realizar ssh y scp sin contraseña bajo el siguientes tres escenarios:

  1. OpenSSH a OpenSSH
  2. Abrir SSH a SSH2
  3. SSH2 a SSH2

En este artículo, explicaré cómo realizar ssh y scp desde SSH2 (host local) a OpenSSH (host remoto) sin contraseña.

1. Identificar la versión de SSH del host local y del host remoto

En este ejemplo, el host local ejecuta SSH2 y el host remoto ejecuta OpenSSH.

[local-host]$ ssh -V
ssh: SSH Secure Shell 3.2.9.1 (non-commercial version) on i686-pc-linux-gnu

[remote-host]$ ssh -V
OpenSSH_4.3p2, OpenSSL 0.9.8b 04 May 2006

2. Genere un par de claves de autenticación SSH2 en el host local mediante ssh-keygen2

En SSH2, ssh-keygen será un enlace suave a ssh-keygen2 como se muestra a continuación.

[local-host]$ ls -l /usr/local/bin/ssh-keygen
lrwxrwxrwx  1 root root 11 Jul 31  2006 /usr/local/bin/ssh-keygen -> ssh-keygen2

[local-host]$ ssh-keygen
Generating 2048-bit dsa key pair
7 o.oOo..oOo.o
Key generated.
2048-bit dsa, jsmith@local-host, Sun Oct 19 2008 14:49:42 -0700
Passphrase : [Enter the password here]
Again      :
Private key saved to /home/jsmith/.ssh2/id_dsa_2048_a
Public key saved to /home/jsmith/.ssh2/id_dsa_2048_a.pub

La clave pública y la clave privada se almacenan en la carpeta .ssh2 en su directorio de inicio. En este ejemplo, se encuentra en /home/jsmith/.ssh2.

No debe compartir la clave privada con nadie.

Por defecto ssh-keygen2 genera un par de claves DSA (Digital Signature Algorithm). También puede generar un par de claves RSA como se muestra a continuación.

[local-host]$ ssh-keygen -t rsa

3. Copie la clave pública SSH2 del host local al host remoto que ejecuta OpenSSH

Copie el archivo local-host:/home/jsmith/.ssh2/id_dsa_2048_a.pub en remote-host:/home/jsmith/.ssh/id_dsa_1024_a.pub. Realice un vi /home/jsmith/.ssh/id_dsa_1024_b.pub en el host remoto y copie el contenido de la clave pública del host local.

[remote-host]$ vi /home/jsmith/.ssh/id_dsa_1024_a.pub
---- BEGIN SSH2 PUBLIC KEY ----
Subject: jsmith
Comment: "2048-bit dsa, jsmith@local-host Sun Oct 19 2008 14:49:42 -070\0"
7ZTVd7H63VyVqBIqfmEBALVa6VKtALZkydlOiPasikEQfujH07tjW+OffaRufFDG0VQESj
5iGSvMtmBBj8wQxGlvJ/dayVqBvvHzMao8bwGC+HFUtH1un7uyIEwOqU1fNzEpghC97mIx
tIxJA7ZTVd7H63VIqmzlLbp/ZCd6bcJLvZEepMz96nlNB4NJ5UYIfdgXNhf/TrJD8COWQs
t6jsP6RG/WrpHi5iGSvMtmBBj8wQGHddexkRnf/o5YMFJZRo4Iwc7+bgYrIyywBZnfLL7T
RTk9TBfWzgJHy/y1tTtCMvVooWvFZbG5AiV3de63MxBaD0o68SASyXZzVM+MabXhjcdXFY
2vjq2vJxOzunEAAAAVAOTeOzDCnj3K5iGSvMtmBBj8wQGHAAABAA38sGpHEfSxLx5MjQci
dko1pKuV1W9rOK3y19A2J2N6rSdWYb7Zyzw8Gr7kTMWX1TP5WhRGCUhNRYnjI+4wgZIZdC
lfGdp8MGI3HBg9CAr702BOzRTMnW0aqsGjrbhcwhWaDgRymhBh++nGAhHxeWn4ApJ8F6kT
8HaAm3dFYXpHCaZ/xuKPXr4DFugGl8MRDU8TwioNE9kRi0Ko/kB5LTHuGhMPHGshMJeVGi
PQTrt9NAzgYyJeT9RB9VZadgElMvQ9S0+fo6ipOA==
---- END SSH2 PUBLIC KEY ----

4. En el host local, cree el archivo ~/.ssh2/identification

Cree el siguiente archivo en el host local.

$ vim ~/.ssh2/identification
IdKey id_dsa_2048_a

5. En el host remoto, convierta la clave pública SSH2 en clave pública OpenSSH

Esto debe ejecutarse en el host remoto que ejecuta OpenSSH. Solo OpenSSH puede convertir claves entre OpenSSH y formato SSH2.

[remote-host]$ ssh-keygen -i -f ~/.ssh/id_dsa_1024_a.pub > \
~/.ssh/id_dsa_1024_a_openssh.pub

Copie la clave pública OpenSSH convertida desde el archivo ~/.ssh/id_dsa_1024_a_openssh.pub al archivo authorized_keys como se muestra a continuación.

[remote-host]$ vi ~/.ssh/authorized_keys
ssh-dss 5iGSvMtmBBj8wQdegAEBALVa6VKtALZkydlOiPasikEQfujH07tjW+OffaRufFD
G0VQESjq+YlVTWcXxStz0xGlvJ/dayVqBvvHzMao8bwGC+HFUtH1un7uyIEwOqU1fNzEpgh
C97s143S8zBcTAGtdegte3IqmlLbp/ZCd6bcJLvZEepMz96nlNB4NJ5UYIfdgXNhf/TrJD8
COWQst6jsP6RG/WrpHiI4QVDM6tZVZ4CnGjm1QPkRnf/o5YMFJZRo4Iwc7+bgYrIyywBZnf
LL7TRTk9TBfWzgJHy/y1tTtCMvVooWvFZbG5AiV3de63MxBaD0o68SASyXZzVM+MabXhjcd
XFY2vjq2vJxOzunEAAAAVAOTeOzDCnj3K5iGSvMtmBBj8wQGHAAABAA38sGpHEfSxLx5MjQ
dFYXpHCaZ/xuKPXr4DFugGl8MRDU8TwioNE9kRi0Ko/kB5LTHuGhMPHGshMJeVGiPQTrt9N
AzgYyJeT9RB9VZadgElMvQ9S0+fo6ipOA==

6. Configure el permiso adecuado en el host remoto para el directorio .ssh

En el host remoto que ejecuta openSSH, asegúrese de configurar el siguiente permiso. Sin esto, tendrá todo tipo de problemas extraños con ssh.

$ chmod 755 ~
$ chmod 755 ~/.ssh
$ chmod 644 ~/.ssh/authorized_keys

7. Inicie sesión desde el host local al host remoto utilizando la autenticación de clave SSH

Realice ssh desde el host local (SSH2) al host remoto (OpenSSH) como se muestra a continuación para verificar si la autenticación basada en clave funciona correctamente.

[local-host]$ [You are on local-host here]

[local-host]$ ssh -l jsmith remote-host
Host key not found from database.
Key fingerprint:
bitaz-navun-gogus-mptop-ljilk-qwlem-ftrtm-llmak-topok-zuiof-bnmix
You can get a public key's fingerprint by running
% ssh-keygen -F publickey.pub on the keyfile.
Are you sure you want to continue connecting (yes/no)? yes
Host key saved to /home/jsmith/.ssh2/hostkeys/key_22_remote-host.pub
host key for remote-host, accepted by jsmith Sun Oct 19 2008 15:06:42 -0700

Passphrase for key "/home/jsmith/.ssh2/id_dsa_2048_a" with comment "2048-bit
dsa, jsmith@local-host, Sun Oct 19 2008 14:49:42 -0700":[Enter password]
Last login: Sun Oct 19 14:01:48 2008 from 192.168.1.10

[remote-host]$ [You are on remote-host here]


Nota :Si obtiene el siguiente error mientras realiza el ssh o scp desde el host local al host remoto, consulte Cómo resolver el problema de negociación del algoritmo fallido en SSH, para solucionar este problema.

[local-host]$ ssh -l jsmith remote-host
warning: Authentication failed.
Disconnected; key exchange or algorithm negotiation failed
(Algorithm negotiation failed.)


Hay dos formas de realizar ssh y scp sin ingresar la contraseña:

  1. Sin frase de contraseña: Al crear un par de claves, deje la frase de contraseña vacía. Utilice esta opción para el procesamiento por lotes automatizado. por ej. si está ejecutando un trabajo cron para copiar archivos entre máquinas, esta es una opción adecuada. Puede omitir los siguientes pasos para este método.
  2. Usar frase de contraseña y agente SSH :si está utilizando ssh y scp de forma interactiva desde la línea de comandos y no desea utilizar la contraseña cada vez que ejecuta ssh o scp, no le recomiendo la opción anterior (sin frase de contraseña), ya que ha eliminado una nivel de seguridad en la autenticación basada en clave ssh. En su lugar, use la frase de contraseña mientras crea el par de claves y use SSH Agent para realizar ssh y scp sin tener que ingresar la contraseña cada vez, como se explica en los pasos a continuación.

8. Inicie el agente SSH en el host local

El Agente SSH se ejecutará en segundo plano para mantener las claves privadas y ejecutar ssh y scp sin tener que ingresar la frase de contraseña varias veces.

[local-host]$ ssh-agent $SHELL

9. Cargue la clave privada en el agente SSH en el host local

[local-host]$ ssh-add

Adding identity: /home/jsmith/.ssh2/id_dsa_2048_a.pub
Need passphrase for /home/jsmith/.ssh2/id_dsa_2048_a (2048-bit dsa,
jsmith@local-host, Sun Oct 19 2008 14:49:42 -0700).
Enter passphrase:[Enter your passphrase here]

10. Realice SSH o SCP desde el host local hasta el hogar remoto sin ingresar la contraseña

[local-host]$ [You are on local-host here]

[local-host]$ ssh -l jsmith remote-host
Last login: Sun Oct 19 14:20:48 2008 from 192.168.1.10

[remote-host]$ [You are on remote-host here]


Si te ha gustado este artículo, compártelo en delicious and Stumble it .


Linux
  1. Inicio de sesión SSH en el servidor RHEL 7 sin contraseña

  2. Configuración de autenticación basada en clave SSH de openSSH a SSH2

  3. Cómo ejecutar SSH y SCP en modo por lotes (solo cuando está habilitado el inicio de sesión sin contraseña)

  4. Cómo ejecutar SCP sin interrupción de solicitud de contraseña en Linux

  5. Cómo ejecutar remotamente el comando ssh un comando sudo sin contraseña

Cómo configurar la clave pública y privada SSH en Linux

Cómo generar y usar una clave SSH usando PuTTY

¿Cómo generar y usar la clave SSH en el sistema Linux?

Cómo agregar una clave SSH a VS Code y conectarse a un host

Cómo copiar archivos de forma remota a través de SSH sin ingresar una contraseña

Realice SSH y SCP sin ingresar la contraseña en openSSH