Question Comment automatiser la connexion SSH avec mot de passe?


Comment automatiser la connexion SSH avec mot de passe? Je configure ma machine virtuelle de test, de sorte que la sécurité lourde n'est pas prise en compte. SSH choisi pour une sécurité acceptable avec une configuration minimale.

ex)

echo password | ssh id@server

Ça ne marche pas.

Je me souviens que j'ai fait cela avec des astuces, mais quelqu'un ne m'a pas rappelé le truc que j'ai utilisé ...


332
2018-03-01 11:07


origine


FreeBSD n'accepte pas les clés sans mot de passe. Ne soyez pas tenté. Cependant, certains serveurs Linux l'ont accepté. Je crois que le serveur Linux a été mal configuré. - Eonil
C'est une question valide. Par exemple, je veux autoriser un utilisateur à entrer un mot de passe, puis à se connecter à une autre machine l’utilisant. Je ne peux pas supposer qu'il y aura des clés SSH distribuées sur toutes nos machines. Les réponses ci-dessous à ce jour n’aident pas cette situation. - dfrankow
unix.stackexchange.com/questions/38737/… || unix.stackexchange.com/questions/38737/… || stackoverflow.com/questions/233217/pass-password-to-su-sudo-ssh - Ciro Santilli 新疆改造中心 六四事件 法轮功
Question très importante. J'ai aussi besoin d'une réponse, mon fournisseur d'espace Web bloque pour mettre des fichiers de clés sur le serveur. Je dois donc transmettre le mot de passe sans fichiers de clés. - Radon8472


Réponses:


N'utilisez pas de mot de passe. Générez une clé SSH sans mot de passe et transmettez-la à votre machine virtuelle.

Si vous avez déjà une clé SSH, vous pouvez ignorer cette étape… Il suffit de frapper Entrer pour la clé et les deux mots de passe:

$ ssh-keygen -t rsa -b 2048
Generating public/private rsa key pair.
Enter file in which to save the key (/home/username/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/username/.ssh/id_rsa.
Your public key has been saved in /home/username/.ssh/id_rsa.pub.

Copiez vos clés sur le serveur cible:

$ ssh-copy-id id@server
id@server's password: 

Maintenant, essayez de vous connecter à la machine, avec ssh 'id@server', et check in:

.ssh/authorized_keys

pour vous assurer que nous n’ajoutons pas de clés supplémentaires que vous n’attendiez pas.

Enfin, vérifiez la connexion…

$ ssh id@server

id@server:~$ 

Vous voudrez peut-être aussi vous pencher sur l'utilisation de ssh-agent si vous voulez essayer de protéger vos clés avec une phrase secrète.


296
2018-03-01 11:17



J'ai finalement décidé d'utiliser des paires de clés. Parce que j'ai réalisé que c'était le moyen le plus simple. - Eonil
@Eonil: Ne soyez pas tenté d'utiliser des clés sans phrase secrète. Apprenez à utiliser ssh-agent ou pageant. - Iain
C'est une bonne réponse, mais pas la bonne réponse à la question. - John Hunt
Ce genre de réponses m'agace vraiment, vraiment. Ce n'était pas la question. Personne n'a demandé comment utiliser les paires de clés. - Matt Fletcher
Cela ne répond pas à la question. C'est une bonne réponse pour une question complètement différente, mais c'est terrible pour celle posée. - srchulo


$ sudo apt-get install sshpass
$ sshpass -p your_password ssh user@hostname

495
2018-05-31 09:08



Oui, parfois, vous ne pouvez pas utiliser l'authentification par clé pour diverses raisons. Par exemple, pour l'instant, je ne peux pas utiliser keyauth sur un serveur Plesk car, dans la boîte, il n'est pas activé et je n'ai pas de racine. - John Hunt
+1! En note de bas de page, vous devez exécuter simplement ssh une fois avant d'utiliser sshpass, afin de confirmer l'empreinte RSA - user123444555621
-1 pour avoir à utiliser le mot de passe dans la commande. Cela enregistre le mot de passe à .bash_history en texte clair sur votre machine.
@MisterDood Vous pourriez courir history -r après la commande pour effacer votre historique. Bon point cependant. - NuclearPeon
Conseil pro: Si vous ne souhaitez pas qu'une commande spécifique apparaisse dans .bash_history, préfixez la commande par un espace. Ça fonctionne. Cependant, les utilisateurs de cette commande devraient être plus soucieux que les utilisateurs non privilégiés du système puissent voir la ligne de commande complète avec ps, qui inclut bien sûr le mot de passe. Comme les sessions SSH ont tendance à durer longtemps, il s'agit d'un problème de sécurité. - CubicleSoft


Réponse facile en trois étapes faciles

Générer un rsa keypair:

# ssh-keygen

puis copiez-le sur le serveur avec une simple commande:

# ssh-copy-id userid@hostname

vous pouvez maintenant vous connecter sans mot de passe:

# ssh userid@hostname

56
2017-11-14 12:57



Fonctionne bien avec les valeurs par défaut. Utiliser ~ / rsa4live.pub ne fonctionnait pas pour moi ssh-copy-id. - Cees Timmerman
Si vous souhaitez que cette procédure fonctionne pour différents utilisateurs, 1. ssh-keygen 2. ssh-copy-id nazir @ nom_hôte 3. ssh nazir @ nom_hôte - Venfah Nazir
Pour moi c'était ssh-copy-id -i ~/.ssh/tatu-key-ecdsa user@host - Gabriel Fair
Ce n'est pas une réponse à la question. - Steve Bennett
Et? La réponse est ci-dessus, sshpass ... - lzap


Utilisez attendez:

#!/usr/bin/expect -f
#  ./ssh.exp password 192.168.1.11 id
set pass [lrange $argv 0 0]
set server [lrange $argv 1 1]
set name [lrange $argv 2 2]

spawn ssh $name@$server
match_max 100000
expect "*?assword:*"
send -- "$pass\r"
send -- "\r"
interact

Exemple:

# ./1.ex password localhost ooshro
spawn ssh ooshro@localhost
ooshro@localhost's password: 
Linux ubuntu-1010-server-01 2.6.35-25-generic-pae #44-Ubuntu SMP Fri Jan 21 19:01:46 UTC 2011 i686 GNU/Linux
Ubuntu 10.10

Welcome to Ubuntu!
 * Documentation:  https://help.ubuntu.com/
Last login: Tue Mar  1 12:41:12 2011 from localhost

25
2018-03-01 11:08



Cela a fonctionné mais il ne peut pas imprimer la sortie standard de la machine distante. - Eonil
cela fonctionne bien car certaines machines ne peuvent pas mettre la clé à l'avance car l'adresse IP est changée à chaque fois. - larrycai
ce sera bien d'ajouter -oStrictHostKeyChecking=no -oUserKnownHostsFile=/dev/null pour la commande ssh afin d'éviter d'accepter la machine dans les hôte connus - larrycai
B .. b mais muh ssh clés ... - Damien Ó Ceallaigh
Vous trouverez un exemple plus détaillé de ce script sur: linuxaria.com/howto/…  Ces exemples ici devraient également fonctionner avec des commandes à distance - Radon8472


Cela ne vous servira peut-être pas, mais vous pouvez le faire avec Perl:

\#!/usr/bin/perl  
use warnings;  
use strict;  

use Net::SSH::Perl;  
my $host = 'remote.serv.er';  
my $user = 'root';  
my $pass = 'hunter2';  
my $ssh = Net::SSH::Perl->new('$host');  
$ssh->login('$user', '$pass') or die "Oh noes! $!";

11
2018-03-01 11:52



De même, vous pouvez faire avec ce Ruby github.com/net-ssh/net-ssh - EnabrenTane


Bien sûr, vous ne voulez pas utiliser de clés SSH plutôt que de mots de passe? De cette façon, c'est à la fois sécurisé et automatique.


9
2018-03-01 11:14



L'utilisation de clés SSH sans mot de passe n'est que légèrement plus sûre que l'utilisation de mots de passe dans un fichier. - yunzen
@ yunzen Incorrect. L'authentification par clé vous protège des attaques par mitose, même si vous ne connaissez pas la clé de l'hôte. Un attaquant pourrait emprunter l'identité du serveur, mais ne jamais se connecter au serveur réel. Avec l’authentification par mot de passe, tous les serveurs auxquels vous vous connectez (légitimes ou non) verront le mot de passe. Pour ces raisons, une clé ssh sans mot de passe est beaucoup plus sécurisée que le simple stockage du mot de passe dans un fichier. - kasperd
Ce n'est pas une réponse. - Steve Bennett
@SteveBennett C'est la même chose que la réponse acceptée et elle a été postée avant, bien qu'elle comporte moins de détails. - Michael Hampton♦
Eh bien, je dirais que la réponse acceptée est une réponse décente à une question qui n’a pas été posée. Ce n'est rien. - Steve Bennett


Je suis surpris personne n'a mentionné plink du putty-tools paquet dans Ubuntu:

plink user@domain -pw mypass  [cmd]

Il est également disponible sur Windows et la syntaxe est principalement compatible avec le client openssh.


4
2017-07-09 13:15



Pour Windows, votre réponse est bonne, mais l'utilisateur ne possède généralement pas plink. - Radon8472
c'est dans le putty-tools paquet - eadmaster