SSH sin contraseña con ubicación de archivo de identidad no predeterminada

16

Como parte de un script de inicio, tengo que abrir automáticamente varias ventanas de terminal gnome, una de esas terminales envía automáticamente:

ssh [email protected]

La limitación con esto es que todavía necesito escribir una contraseña para completar la conexión SSH.

Lo que quiero hacer es que mi script inicie el comando y complete la conexión. En ese sentido, intenté seguir las instrucciones que se detallan en la respuesta aceptada aquí .

Desde el sistema desde el que deseo conectarme, ejecuté:

ssh-keygen
Enter file in which to save the key: /home/user/ssh/keys/server1key

Luego me solicitó ingresar una frase de contraseña. Lo dejé vacío, ya que no estaba seguro de para qué sería, así que asumí que configurar uno requeriría desbloquearlo con dicha frase de contraseña cada vez que lo usara.

Continuando con las instrucciones vinculadas anteriormente, corrí y recibí lo siguiente:

ssh-copy-id user@IP
ERROR: No identities found

Una búsqueda rápida reveló que necesitaba especificar la ubicación de la clave, ya que no estaba en la ubicación de guardado predeterminada, así que arreglé eso:

ssh-copy-id -i /home/user/ssh/keys/server1key.pub [email protected]

Después de pedir la contraseña del servidor, agregó con éxito la clave. Sin embargo, al intentar iniciar sesión con "ssh user @ IP", aún se me solicitó la contraseña.

Hasta donde sé, seguí las instrucciones vinculadas correctamente, ¿o me falta algo o tal vez una configuración existente me impide hacer que esto funcione?

Ambos sistemas usan 18.04 y openssh.

hiigaran
fuente
Entonces, ¿debo especificar la ubicación del archivo .pub al enviar el comando SSH?
hiigaran
Tengo una forma un poco diferente de organizar mis archivos, de ahí las ubicaciones no predeterminadas, pero ustedes me han ayudado mucho. Gracias. Siéntase libre de hacer una respuesta que pueda aceptar.
hiigaran

Respuestas:

35

Falla por la misma razón que ssh-copy-idfalló la primera vez, es decir, porque ha elegido una ubicación no predeterminada para el archivo de identidad.

Puede resolverlo de la misma manera, agregando -i /home/user/ssh/keys/server1keya su sshcomando: tenga en cuenta que el lado del cliente necesita la ubicación del archivo de clave privada .

Desde man ssh

 -i identity_file
         Selects a file from which the identity (private key) for public
         key authentication is read.  The default is ~/.ssh/identity for
         protocol version 1, and ~/.ssh/id_dsa, ~/.ssh/id_ecdsa,
         ~/.ssh/id_ed25519 and ~/.ssh/id_rsa for protocol version 2.

Alternativamente, es posible que desee crear una ~/.ssh/configentrada de archivo para el host a lo largo de las líneas de

Host            somename
Hostname        192.168.1.3
User            user
IdentityFile    /home/user/ssh/keys/server1key
conductor de acero
fuente
1
Siempre supuse que el archivo de configuración requería sangría; veo que ese no es el caso. Intrigando.
Boris the Spider
Cualquiera que use OpenSSH debe tener un ~/.ssh/config, de lo contrario OpenSSH usa el valor predeterminado de todo el sistema /etc/ssh/ssh_config. En caso de que alguien lo encuentre útil, cargué un ssh_config preconstruido en mi GitHub hace un tiempo como punto de partida para los usuarios que pueden no tener tiempo para leer la página de
manual de ssh_config
@ JW0914 eso es solo cierto a medias: los valores individuales anularán los valores ~/.ssh/configglobales ssh_config, pero solo tener el archivo no deshabilitará la configuración de todo el sistema.
Sebastian Stark
@SebastianStark Quizás leyó mal mi comentario, ya que nunca dije que deshabilitaría la configuración de todo el sistema. Lo que dije fue 100% fácticamente exacto.
JW0914
2

Otra razón que ssh-copy-idfalla es que la clave no se ha agregado al agente SSH.

Primero, verifique y comience si se ssh-agentestá ejecutando:

eval "$(ssh-agent -s)"

Si obtiene la identificación del proceso, puede agregar su clave:

ssh-add -k /home/user/ssh/keys/server1key

Con -kusted agregue la llave al llavero.

Compruebe si las claves se agregan con:

ssh-add -l

ssh-copy-id debería estar trabajando ahora.

Martijn
fuente
-1

Espero que esto funcione para usted ... "sshpass -p yourpassword" se conectará automáticamente al host remoto.

[root @ localhost .ssh] # sshpass -p contraseña123 ssh -l root localhost

JackyChan
fuente
-1

Simplemente ejecute 2 comandos:

ssh-keygen
ssh-copy-id

Respuesta larga:

user@ip:~$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/user/.ssh/id_rsa): temp_file
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in stemp.
Your public key has been saved in stemp.pub.
The key fingerprint is:
SHA256:5**M user@ip
The key's randomart image is:
+---[RSA 2048]----+
|  ...            |
| ...             |
| ..              |
| ..+.    o .     |
|                 |
|    B            |
|                 |
|=      *         |
|=+   o .         |
+----[SHA256]-----+

Y entonces:

user@ip:~$ ssh-copy-id -i ~/.ssh/id_rsa.pub ipDestination -p portDest
Mohsen Abasi
fuente