SSH von Windows zu Linux ohne Eingabe eines Passworts

11

Ich versuche, ssh / scp von Windows nach Linux zu verwenden, ohne ein Passwort eingeben zu müssen.

Das habe ich getan und es scheint nicht zu funktionieren:

  • generierte öffentliche und private Schlüssel mit Putty Key Generator (unter Windows)
  • speicherte die Dateien als id_rsa.pubundid_rsa
  • kopierte sie in ~/.ssh
  • id_rsa.pub zur Linux-Box in hinzugefügt ~/.ssh/authorized_keys
  • Ich versuche dann sshvon Windows auf die Linux-Box zuzugreifen und muss noch ein Passwort eingeben

Vermisse ich etwas

Peter Mortensen
quelle

Antworten:

10

Sie müssen einen Authentifizierungsagenten unter Windows ausführen.

Zum Beispiel Pageant , der in Kombination mit PuTTY (grafischer SSH-Client) oder Plink (Befehlszeilenäquivalent) verwendet wird.

Sie müssen Pageant den öffentlichen Schlüssel Ihres SSH-Servers mitteilen. Danach werden die Authentifizierungsanforderungen Ihres Servers verarbeitet, während sie im Hintergrund ausgeführt werden.

Silvio Donnini
quelle
1
Hinweis: (Dies war mir nicht klar.) Beim Öffnen von Pageant wird es als Symbol im Benachrichtigungsbereich unten rechts geöffnet. Klicken Sie mit der rechten Maustaste darauf, klicken Sie auf Schlüssel hinzufügen und wählen Sie die aus puttygen generierte PPK-Datei aus.
Badjr
8

Du brauchst Festzug .

Siehe das Video Passwortloses Login mit PuTTY und Pageant . Und / oder der Blog-Beitrag Howto: Passwortlose SSH-Authentifizierung mit PuTTY .

Eduardo
quelle
1
Bitte versuchen Sie, anstelle von Videos einen Link zu textbasierten Tutorials zu erstellen.
ein Kodierer
Der Blog-Link ist defekt. Versuchen Sie dieses: tecmint.com/ssh-passwordless-login-with-putty
Kai Wang
2
Der defekte Blog-Link ist der genaue Grund, warum Antworten mehr als ein Link sein sollten.
Ramhound
4

Probieren Sie Plink (Teil von PuTTY)

 plink -v [email protected] -pw yourpw "some linux command"
Carlos Gutiérrez
quelle
3
+1 für eine korrekte Antwort, aber Sie sind besser dran, ein öffentliches / privates Schlüsselpaar als ein Passwort zu verwenden.
Ted Percival
Trotz der Alternative können Sie mit plink kein normales Terminal verwenden, zum Beispiel: Die Pfeiltasten funktionieren nicht für den Bash-Verlauf
PYK
3

Das Einrichten der SSH-Schlüsselauthentifizierung kann etwas schwierig sein. Es hört sich so an, als würden Sie alle Ihre Basen abdecken. Eine Sache, die Menschen oft überrascht - Sie müssen sicherstellen, dass das .sshVerzeichnis und sein Inhalt Ihnen gehören und nur von Ihnen gelesen / beschreibbar sind.

Stellen Sie sicher, dass Sie dies ausführen (in allen Ihren .sshVerzeichnissen):

chmod -R 700 on ~/.ssh

Wenn dies nicht funktioniert, aktivieren Sie die ausführliche Protokollierung, indem Sie sie -vzu Ihrem sshBefehl hinzufügen (Sie können bis zu drei -vsSekunden hinzufügen, um mehr Ausführlichkeit zu erzielen).

rcw3
quelle
2

Ich gehe davon aus, dass Ihre Schlüssel nicht passwortgeschützt sind und Sie keine Anfrage nach dem Passwort Ihres Schlüssels erhalten.

~ / .ssh wird von Putty auf der Windows-Seite nicht verwendet, und Putty hat keine Standardeinstellung für den privaten Schlüssel. Wenn Sie einen Befehlszeilen-SSH-Client wie cygwin verwenden, funktioniert das Erstellen eines .ssh-Verzeichnisses von zu Hause aus. Von Putty aus müssen Sie eine Sitzung konfigurieren und speichern.

Sehen Sie sich im Dialogfeld zur Kittkonfiguration die Verbindung -> Daten an und füllen Sie das Feld Benutzername für die automatische Anmeldung aus. Gehen Sie dann zu Verbindung -> ssh -> auth und stellen Sie Ihren privaten Schlüssel richtig ein. Kehren Sie dann zum Sitzungsdialog zurück und speichern Sie diese Sitzung. Sie können auch den Hostnamen festlegen, wenn Sie möchten.

Sobald Sie eine gespeicherte Sitzung haben, können Sie 'putty-load "savedsession"' verwenden.

Andrew B.
quelle
Außerdem chmod 700 ~ / .ssh auf dem Zielcomputer und chmod 644 ~ / .ssh / autorisierte Schlüssel. Nachdem ich Ihren Anweisungen gefolgt und die Berechtigungen korrekt festgelegt hatte, funktionierte es für mich.
Blisterpeanuts
2

Ich habe das benutzt:

c: \> type c:\users\my_name\.ssh\id_rsa.pub | ssh [email protected] "cat >> ~/.ssh/authorized_keys"

Robert Djabarov
quelle
1

Möglicherweise müssen Sie auch die Berechtigungen für Ihr Home-Verzeichnis ändern:

chmod 755 ~
Haydn
quelle
1

Ich konnte dies genau Windows 7anhand der -iOption zur Bereitstellung eines privaten Identitätsschlüssels tun :

ssh -i X: \ win-path \ to \ private-key [email protected]

außer dass auf dem Remote-Host meine autorisierten Schlüssel in /etc/ssh/authorized_keys/remoteuserund in sind /etc/ssh/sshd_config, habe ich geändert

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

aber ich weiß nicht, ob die SSH-Remote-Konfiguration eine Rolle spielen sollte.

amphibient
quelle
1

Sie benötigen sshlediglich die plattformübergreifenden Befehlszeilentools ssh-keygen& ssh-copy-id. Git für Windows enthält sie.

Führen Sie dies entweder über die von git installierte bashShell aus:

#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

Oder führen Sie dieses Skript in PowerShell aus:

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"

Danach sollte Anmeldung ohne Passwort für beide arbeiten sshund scp.

Chris F. Carroll
quelle