SSH de Windows a Linux sin ingresar una contraseña


9

Estoy tratando de usar ssh / scp de Windows a Linux sin tener que ingresar una contraseña.

Esto es lo que he hecho, y no parece funcionar:

  • genera claves públicas y privadas usando Putty Key Generator (en Windows)
  • guardado los archivos como id_rsa.pubyid_rsa
  • los copié en ~/.ssh
  • agregó id_rsa.pub al cuadro de Linux en ~/.ssh/authorized_keys
  • Luego intento sshacceder a la caja de Linux desde Windows y todavía tengo que ingresar una contraseña

¿Me estoy perdiendo de algo?

Respuestas:


8

Debe ejecutar un agente de autenticación en Windows.

Por ejemplo, Pageant , usado en combinación con PuTTY (cliente SSH gráfico) o Plink (su equivalente en la línea de comandos).

Tendrá que decirle a Pageant la clave pública de su servidor SSH. Después de eso, se encargará de las solicitudes de autenticación de su servidor mientras se ejecuta en segundo plano.


Nota: (Esto no era obvio para mí). Al abrir el concurso, se abrirá como un icono en el área de notificación en la parte inferior derecha. Haga clic con el botón derecho, haga clic en Agregar clave y seleccione el archivo .ppk que se generó a partir de puttygen.
badjr

7

1
Intente vincular a tutoriales basados ​​en texto en lugar de videos.
un codificador

El enlace del blog está roto. Pruebe este: tecmint.com/ssh-passwordless-login-with-putty
Kai Wang

2
El enlace del blog roto es la razón exacta por la que las respuestas deberían ser más que un enlace.
Ramhound

3

Prueba Plink (parte de PuTTY)

 plink -v youruser@yourhost.com -pw yourpw "some linux command"

3
+1 para una respuesta correcta, pero es mejor usar un par de claves pública / privada que una contraseña.
Ted Percival

3

Configurar la autenticación de clave SSH puede ser un poco complicado. Parece que estás cubriendo todas tus bases. Una cosa que a menudo sorprende a las personas con la guardia baja: debe asegurarse de que el .sshdirectorio y su contenido sean de su propiedad y que usted los pueda leer y escribir solo.

Asegúrese de ejecutar esto (en todos sus .sshdirectorios):

chmod -R 700 on ~/.ssh

Si eso no funciona, active el registro detallado agregando -va su sshcomando (puede agregar hasta tres -vss para obtener más verbosidad).


2

Supongo que sus claves no están protegidas con contraseña, y lo que está obteniendo no es una solicitud de contraseña de su clave.

~ / .ssh no es utilizado por masilla en el lado de Windows, y la masilla no tiene una configuración de clave privada predeterminada. Si está utilizando un cliente ssh de línea de comandos como cygwin, la creación de un directorio .ssh fuera de su hogar funcionaría. Desde masilla, deberá configurar y guardar una sesión.

Desde el cuadro de diálogo de configuración de masilla, mire la conexión -> datos y complete el campo de nombre de usuario de inicio de sesión automático. Luego vaya a conexión -> ssh -> auth, y configure su clave privada correctamente. Luego regrese al diálogo de sesión y guarde esta sesión. También puede configurar el nombre de host si lo desea.

Una vez que tenga una sesión guardada, puede usar 'putty -load "savedsession"'.


Además, chmod 700 ~ / .ssh en la máquina de destino y chmod 644 ~ / .ssh / claves autorizadas. Una vez que seguí tus instrucciones y configuré los permisos correctamente, comenzó a funcionar para mí.
Blisterpeanuts

1

También es posible que deba cambiar los permisos en su directorio de inicio:

chmod 755 ~

0

He intentado un par de formas de hacerlo y la primera que funcionó para mí fue ssh-copy-id

#By default this puts keyfile pair in ~/.ssh/id_rsa & ~/.ssh/id_rsa.pub :

ssh-keygen.exe -t rsa -b 2048 
ssh-copy-id -i ~/.ssh/id_rsa.pub  $remoteuser@$remotehost


# I'm not sure if these two chmod lines are needed on windows but 
# typically ssh refuses to use a private key file 
# if it is less-well protected than this:
chmod 700 ~/.ssh
chmod 640 ~/.ssh/id_rsa

La forma más fácil de obtener las sshherramientas es instalar git para Windows.

Ejecuté los comandos anteriores desde el shell bash instalado por git. Ejecutar ssh-copy-id de powershell de alguna manera no funcionó, así que terminé con este script de PowerShell

Param(
  [Parameter()][string]$keyfile="id_rsa",
  [Parameter()][string]$remotehost,
  [Parameter()][string]$remoteuser
  )
write-host "# ---------------------------------------------------------------------------------#"
write-host "# Create an RSA public/private key pair, and copy the public key to remote server  #"
write-host "#                                                                                  #"
write-host "# https://superuser.com/questions/96051                                            #"
write-host "#         ssh-from-windows-to-linux-without-entering-a-password/1194805#1194805    #"
write-host "#                                                                                  #"
write-host "# ---------------------------------------------------------------------------------#"

write-host "Keyfile pair will be saved at : ~/.ssh/$keyfile, ~/.ssh/$keyfile.pub"
write-host "And copied to $remoteuser@$remotehost"
write-host ""
write-host "You will need a password for the copy operation."
write-host ""

if( -not $(ls ~/.ssh) ) { mkdir ~/.ssh }
$sshdir=$(get-item ~/.ssh/).Fullname

#By default this puts keyfile pair in ~/.ssh/id_rsa & ~/.ssh/id_rsa.pub :
ssh-keygen.exe -t rsa -b 2048 -f "$sshdir$keyfile"
bash -c "ssh-copy-id -i ~/.ssh/$keyfile.pub $remoteuser@$remotehost"

# I'm not sure if these two chmod lines work on windows but 
# typically ssh refuses to use a private key file 
# if it is less-well protected than this:
chmod.exe 700 $sshdir
chmod.exe 640 "$sshdir$keyfile"

0

Pude hacer esto exactamente Windows 7usando la -iopción para proporcionar una clave privada de identidad:

ssh -i X: \ win-path \ to \ private-key remoteuser@remote.host.com

excepto que en el host remoto, mis claves autorizadas están dentro /etc/ssh/authorized_keys/remoteusery dentro /etc/ssh/sshd_config, cambié

#AuthorizedKeysFile     .ssh/authorized_keys
AuthorizedKeysFile      /etc/ssh/authorized_keys/%u

pero no sé si la configuración remota SSH debería importar.


0

Usé esto:

c:> escriba c: \ users \ my_name.ssh \ id_rsa.pub | ssh root@172.110.1.171 "cat >> / root / .ssh / Authorized_keys"

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.