SSH de Windows à Linux sans entrer de mot de passe

9

J'essaie d'utiliser ssh / scp de Windows à Linux sans avoir à entrer un mot de passe.

C'est ce que j'ai fait et cela ne semble pas fonctionner:

  • clés publiques et privées générées à l'aide de Putty Key Generator (sous Windows)
  • enregistré les fichiers sous id_rsa.pubetid_rsa
  • copié dans ~/.ssh
  • ajouté id_rsa.pub à la machine Linux dans ~/.ssh/authorized_keys
  • J'essaie ensuite de sshpasser à Linux sous Windows et je dois encore entrer un mot de passe

Est-ce que je manque quelque chose?

Peter Mortensen
la source

Réponses:

8

Vous devez exécuter un agent d'authentification sous Windows.

Par exemple, Pageant , utilisé en combinaison avec PuTTY (client SSH graphique) ou Plink (son équivalent en ligne de commande).

Vous devrez indiquer à Pageant la clé publique de votre serveur SSH. Après cela, il traitera les demandes d'authentification de votre serveur tout en s'exécutant en arrière-plan.

Silvio Donnini
la source
Remarque: (Cela n’était pas évident pour moi.) Lors de l’ouverture de Pageant, une icône s’ouvrira dans la zone de notification en bas à droite. Cliquez dessus avec le bouton droit de la souris et sélectionnez Ajouter une clé , puis sélectionnez le fichier .ppk généré à partir de puttygen.
badjr
7

Vous avez besoin de Pageant .

Voir la vidéo Connexion sans mot de passe avec PuTTY et Pageant . Et / ou l'article de blog Howto: Authentification SSH sans mot de passe avec PuTTY .

Eduardo
la source
1
Essayez de créer un lien vers des tutoriels textuels au lieu de vidéos.
un codeur
Le lien de blog est cassé. Essayez celui-ci: tecmint.com/ssh-passwordless-login-with-putty
Kai Wang
2
Le lien de blog cassé est la raison exacte pour laquelle les réponses devraient être plus qu'un lien.
Ramhound
3

Essayez Plink (une partie de PuTTY)

 plink -v [email protected] -pw yourpw "some linux command"
Carlos Gutiérrez
la source
3
+1 pour une réponse correcte, mais vous feriez mieux d'utiliser une paire de clés publique / privée plutôt qu'un mot de passe.
Ted Percival le
3

La configuration de l'authentification par clé SSH peut s'avérer un peu délicate. On dirait que vous couvrez toutes vos bases. Une chose qui surprend souvent les gens au dépourvu: vous devez vous assurer que le .sshrépertoire et son contenu vous appartiennent et sont en lecture / écriture uniquement à vous.

Assurez-vous d’exécuter ceci (sur tous vos .sshrépertoires):

chmod -R 700 on ~/.ssh

Si cela ne fonctionne pas, activez la journalisation détaillée en ajoutant -và votre sshcommande (vous pouvez ajouter jusqu'à trois -vssecondes pour plus de détail).

rcw3
la source
2

Je suppose que vos clés ne sont pas protégées par un mot de passe et que ce que vous obtenez n'est pas une demande du mot de passe de votre clé.

~ / .ssh n'est pas utilisé par putty du côté de Windows et putty n'a pas de paramètre de clé privée par défaut. Si vous utilisez un client ssh en ligne de commande tel que cygwin, la création d'un répertoire .ssh à partir de votre domicile fonctionnerait. À partir de mastic, vous devrez configurer et enregistrer une session.

Dans la boîte de dialogue de configuration du mastic, regardez connection -> data, puis renseignez le champ nom d'utilisateur de connexion automatique. Ensuite, allez à connection -> ssh -> auth, et définissez votre clé privée correctement. Revenez ensuite à la boîte de dialogue de session et sauvegardez cette session. Vous pouvez également définir le nom d'hôte si vous le souhaitez.

Une fois que vous avez une session sauvegardée, vous pouvez utiliser 'putty -load "savedsession"'.

Andrew B
la source
En outre, chmod 700 ~ / .ssh sur la machine cible et chmod 644 ~ / .ssh / clés autorisées. Une fois que j'ai suivi vos instructions et défini les autorisations correctement, cela a commencé à fonctionner pour moi.
Blisterpeanuts
1

Vous devrez peut-être également modifier les autorisations sur votre répertoire de base:

chmod 755 ~
Haydn
la source
0

J'ai essayé plusieurs façons de le faire et le premier qui a fonctionné pour moi était 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

Le moyen le plus simple d’obtenir ces sshoutils est d’installer Git pour Windows.

J'ai exécuté les commandes ci-dessus à partir du shell bash installé par git. Exécuter ssh-copy-id depuis powershell n'a pas fonctionné, alors j'ai terminé avec ce script 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
la source
0

Je pouvais le faire exactement Windows 7en utilisant l' -ioption permettant de fournir une clé privée d'identité:

ssh -i X: \ chemin-win \ to \ clé-privée [email protected]

sauf que sur l'hôte distant, mes clés autorisées sont dans /etc/ssh/authorized_keys/remoteuseret dans /etc/ssh/sshd_config, j'ai changé

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

mais je ne sais pas si la configuration à distance SSH devrait avoir de l'importance.

amphibient
la source
0

J'ai utilisé ceci:

c:> tapez c: \ utilisateurs \ mon_nom.ssh \ id_rsa.pub | ssh [email protected] "cat >> / root / .ssh / allowed_keys"

Robert Djabarov
la source