SSH da Windows a Linux senza inserire una password


11

Sto cercando di utilizzare ssh / scp da Windows a Linux senza dover inserire una password.

Questo è quello che ho fatto e non sembra funzionare:

  • ha generato chiavi pubbliche e private usando Putty Key Generator (su Windows)
  • salvato i file come id_rsa.pubeid_rsa
  • copiati in ~/.ssh
  • aggiunto id_rsa.pub alla casella Linux in ~/.ssh/authorized_keys
  • Quindi provo sshad accedere a Linux da Windows e devo ancora inserire una password

Mi sto perdendo qualcosa?

Risposte:


10

Devi eseguire un agente di autenticazione su Windows.

Ad esempio, Pageant , utilizzato in combinazione con PuTTY (client SSH grafico) o Plink (equivalente della sua riga di comando).

Dovrai comunicare a Pageant la chiave pubblica del tuo server SSH. Successivamente gestirà le richieste di autenticazione del server durante l'esecuzione in background.


2
Nota: (Questo non era ovvio per me.) All'apertura di Pageant, si aprirà come icona nell'area di notifica in basso a destra. Fare clic con il tasto destro del mouse e fare clic su Aggiungi chiave , quindi selezionare il file .ppk generato da puttygen.
badjr

8

1
Prova a collegarti a tutorial testuali anziché a video.
un programmatore

Il link al blog è interrotto. Prova questo: tecmint.com/ssh-passwordless-login-with-putty
Kai Wang,

2
Il collegamento al blog interrotto è la ragione esatta per cui le risposte dovrebbero essere più di un collegamento.
Ramhound,

5

Prova Plink (parte di PuTTY)

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

3
+1 per una risposta corretta, ma è meglio usare una coppia di chiavi pubblica / privata piuttosto che una password.
Ted Percival,

Nonostante l'alternativa, con Plink non puoi avere un normale terminale con esso, ad esempio: i tasti freccia non funzioneranno per la cronologia di bash
PYK

3

L'impostazione dell'autenticazione con chiave SSH può essere un po 'complicata. Sembra che tu stia coprendo tutte le tue basi. Una cosa che spesso sorprende le persone: devi assicurarti che la .sshdirectory e i suoi contenuti siano di tua proprietà e siano leggibili / scrivibili solo da te.

Assicurati di eseguire questo (su tutte le tue .sshdirectory):

chmod -R 700 on ~/.ssh

Se non funziona, attiva la registrazione dettagliata aggiungendo -val tuo sshcomando (puoi aggiungere fino a tre -vss per maggiore verbosità).


2

Suppongo che le tue chiavi non siano protette da password e che cosa stai ottenendo non è una richiesta per la password della tua chiave.

~ / .ssh non viene utilizzato da putty sul lato di Windows e putty non ha un'impostazione di chiave privata predefinita. Se stai usando un client ssh da riga di comando come cygwin, la creazione di una directory .ssh fuori dalla tua casa funzionerebbe. Da stucco, dovrai configurare e salvare una sessione.

Dalla finestra di dialogo di configurazione dello stucco, guarda connessione -> dati e compila il campo del nome utente di accesso automatico. Quindi vai a connessione -> ssh -> auth e imposta correttamente la tua chiave privata. Quindi tornare alla finestra di dialogo della sessione e salvare questa sessione. Puoi anche impostare il nome host, se lo desideri.

Una volta che hai una sessione salvata, puoi usare 'putty -load "savedsession"'.


Inoltre, chmod 700 ~ / .ssh sul computer di destinazione e chmod 644 ~ / .ssh / chiavi autorizzate. Dopo aver seguito le tue istruzioni e impostato correttamente le autorizzazioni, ha iniziato a funzionare per me.
Blisterpeanuts,

2

Ho usato questo:

C: \> type c:\users\my_name\.ssh\id_rsa.pub | ssh root@172.110.1.171 "cat >> ~/.ssh/authorized_keys"


1

Potrebbe anche essere necessario modificare le autorizzazioni per la home directory:

chmod 755 ~

1

Sono stato in grado di farlo esattamente Windows 7utilizzando l' -iopzione per fornire una chiave privata di identità:

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

tranne che sull'host remoto, le mie chiavi autorizzate sono dentro /etc/ssh/authorized_keys/remoteusere dentro /etc/ssh/sshd_config, ho cambiato

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

ma non so se la configurazione remota SSH dovrebbe avere importanza.


1

Tutto ciò che serve sono gli sshstrumenti da riga di comando multipiattaforma , ssh-keygen& ssh-copy-id. git per Windows li include.

O fai questo dalla bashshell installata da git :

#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

# These two chmod lines are needed on unix platforms, probably not on Windows. 
# 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

O esegui questo script in 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 "# /superuser/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"

# ssh-copy-id somehow didn't work in Powershell so I called it via bash
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"

Dopo questo, il login senza password dovrebbe funzionare per entrambi sshe scp.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.