Exécuter ssh avec authentification par mot de passe via l'invite de commande Windows

93

J'ai besoin d'exécuter ssh à partir de la ligne de commande Windows en fournissant un mot de passe de manière non interactive. Je pourrais implémenter l'authentification basée sur la clé et être capable d'exécuter les commandes ssh comme

ssh <user>@<host> <command>

Y a-t-il des commandes comme

ssh <user>@<host> -P <password> <command>

entrez la description de l'image ici

Je ne sais pas si c'est faisable. Cependant, il peut y avoir des contournements pour le même. Lancez-moi quelques idées pour accomplir la même chose.

Balachandar
la source
2
L'utilisation de l'authentification par clé est une bien meilleure idée.
Greg Inozemtsev
1
Oui, j'ai également une exigence d'authentification basée sur un mot de passe.
Balachandar
12
@GregInozemtsev alors que c'est le cas, parfois le besoin d'un script rapide et sale pour faire quelque chose comme ça, en particulier dans un environnement de test ou autre où la sécurité pure n'est pas requise.
TheJosh
Je ne comprends pas pourquoi cette option de base manque. Je cherchais la commande -pw superputty (putty): (Je suppose que je vais passer aux clés ssh à la place.
m3nda

Réponses:

160

L' utilitaire sshpass est destiné exactement à cela. Tout d'abord, installez sshpass en tapant cette commande:

sudo apt-get install sshpass

Ensuite, ajoutez votre commande ssh / scp avec

sshpass -p '<password>' <ssh/scp command>

Ce programme est le plus simple à installer lors de l'utilisation de Linux.

L'utilisateur doit plutôt envisager d'utiliser l'authentification par clé publique plus sécurisée de SSH (avec la sshcommande).

Anish Bhatt
la source
8
Fonctionne aussi pour rsync.
TheJosh
15
Parce que le titre n'inclut pas les "fenêtres" et qu'il apparaît en haut de la liste lors de la recherche pour Linux / Unix / Mac. Donc, répondre à cette question ici fait gagner du temps.
Frobbit
1
Fonctionne très bien sous Mac OS X. J'ai installé sshpass via sudo port install sshpass. Cependant, s'il y a un problème de connexion dû à autre chose, sshpass avait tendance à échouer silencieusement (pas de message d'erreur). Alors déboguez la commande sans d' sshpassabord; puis ajoutez sshpass -p blah(etc.).
RedRedSuit
5
Vous devez être conscient que les commandes shell exécutées sont stockées (par exemple dans '.bash_history').
Benjamin
4
Anish - L'auteur a demandé des fenêtres, vous avez donné une option pour Linux.
arka.b
24

Qu'en est-il de ce script d'attente?

#!/usr/bin/expect -f
spawn ssh root@myhost
expect -exact "root@myhost's password: "
send -- "mypassword\r"
interact
Illarion Kovalchuk
la source
Il dit que je n'ai pas le script attendu
Sameer Sawla
expectest notoirement sous-estimé!
Frerich Raabe
5

Solution Windows

  1. Installez PuTTY
  2. presse Windows-Key + R
  3. Entrer putty.exe -ssh [username]@[hostname] -pw [password]
optimiertes
la source
2

Solution PowerShell

Utilisation de Posh-SSH:

New-SSHSession -ComputerName 0.0.0.0 -Credential $cred | Out-Null
Invoke-SSHCommand -SessionId 1 -Command "nohup sleep 5 >> abs.log &" | Out-Null
Owain Esau
la source