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?

Peter Mortensen
fuente

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.

Silvio Donnini
fuente
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
3

Prueba Plink (parte de PuTTY)

 plink -v [email protected] -pw yourpw "some linux command"
Carlos Gutiérrez
fuente
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).

rcw3
fuente
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"'.

Andrew B
fuente
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 ~
Haydn
fuente
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"
Chris F Carroll
fuente
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 [email protected]

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.

anfibio
fuente
0

Usé esto:

c:> escriba c: \ users \ my_name.ssh \ id_rsa.pub | ssh [email protected] "cat >> / root / .ssh / Authorized_keys"

Robert Djabarov
fuente