61 votes

ajout du mot de passe au fichier .ssh/config

J'utilise ubuntu 12.04. J'utilise ssh pour me connecter à de nombreux serveurs quotidiennement, j'ai donc mis leurs paramètres dans .ssh/config comme ceci :

Host server1
User tux
Port 2202
HostName xxx.x.xx.x

Je sais que nous devrions utiliser une paire de clés pour assurer la sécurité, mais parfois nous ne pouvons pas ajouter de clé publique à la machine distante (par exemple, un serveur SSH public qui accepte le mot de passe et exécute une commande spécifique, ou un utilisateur sans répertoire personnel).

Alors, y a-t-il un moyen de mettre des mots de passe dans ce fichier, pour chaque connexion ? Ainsi, lorsque le serveur demande un mot de passe, le terminal met son mot de passe et l'envoie au serveur, de sorte que je n'ai pas besoin de taper le mot de passe à chaque fois.

49voto

Sidhi Ciang Points 151

Non, il n'y a pas de méthode pour spécifier ou fournir sur la ligne de commande le mot de passe d'une manière non interactive pour l'authentification ssh en utilisant un mécanisme intégré à openssh. Du moins, pas à ma connaissance. Vous pourriez coder en dur votre mot de passe dans expect script mais ce n'est pas non plus une bonne solution.

Vous devez absolument utiliser des paires de clés pour l'authentification sans mot de passe, comme l'a dit Michael, car la clé privée est en fait un gros mot de passe dans le fichier.

36voto

MarkPowell Points 11394

Pour éviter la série de commentaires : Oui, ce n'est pas sûr (même si on ne peut pas dire que ce soit sûr). Je vous recommande fortement de ne le faire que dans une situation de laboratoire sur un réseau isolé ou une situation similaire qui n'implique pas de serveurs de production ou potentiellement de serveur de production sans une réinitialisation/un formatage complet.

Je voulais mettre cela en place car je ne pense pas que mon commutateur 2950 supporte les clés privées/publiques et j'espère à un moment donné obtenir cette connaissance, mais je n'en suis pas encore là.

En utilisant un alias et sshpass, cela peut être accompli.

  1. Installer sshpass
  2. Modifiez votre .ssh/config pour inclure le nom d'utilisateur comme indiqué dans la question
  3. Ajoutez un alias à votre terminal (j'ai utilisé .bashrc et je recommande de ne pas utiliser de paramètres globaux).
  4. Utiliser un alias pour se connecter à la cible

Mon exemple d'alias est :

alias ssc='sshpass -pcisco ssh'

Où "cisco" est le mot de passe. Notez qu'il n'y a pas d'espace entre le -p et le mot de passe.

L'usage est (en se référant à la question) :

ssc server1

Note : Ceci répond à la question en titre uniquement pour ceux qui utilisent des moteurs de recherche. Si vous utilisez des serveurs comme dans l'exemple de la question, il convient d'utiliser des paires de clés privées/publiques et non cette réponse.

28voto

Chalkers Points 511

Oui, comme mentionné ci-dessus, il n'y a aucun moyen de sauvegarder le mot de passe simplement. Je recommande d'utiliser la clé ssh pour l'autorisation.

d'abord, générez votre clé :

ssh-keygen

Copiez ensuite la clé sur vos serveurs/ordinateurs :

ssh-copy-id -i .ssh/id_rsa.pub user@ip-address:

C'est tout. Le mot de passe ne vous sera plus jamais demandé.

Je recommande également de supprimer l'autorisation des mots de passe en général, mais c'est à vous de voir.

12voto

mnach Points 201

J'utilise ce script de ~/.local/bin répertoire

#!/usr/bin/bash

ORIG_SSH=/usr/bin/ssh
HOST=$1

SSHPASS=$(grep -Pzo "Host $HOST"'\s*\n((?!Host).*\n)*#PS\s(\N+)\n' ~/.ssh/config|tail -n 2|head -n 1 | sed 's/#PS //')
if [ -n $SSHPASS ]; then
    export SSHPASS
    sshpass -e $ORIG_SSH $@
else
    $ORIG_SSH $@
fi

Ce qui me permet de spécifier la phrase de passe en tant que #PS <password> en .ssh/config archivo.

Mais, comme tout le monde le dit, c'est mieux d'utiliser ssh-keys avec ssh-agent quand c'est possible

4voto

Eddy Points 296

Il n'y a aucun moyen de faire ça avec ssh, c'est aussi peu sûr que possible.

Comme Danila l'a mentionné, vous pourriez utiliser l'attente scripts mais je n'en prendrais pas la peine.

Je me demande ce que vous essayez d'obtenir. Voulez-vous sauter d'un serveur à l'autre ? Dans ce cas, vous devez configurer et utiliser ssh-agent sur votre poste de travail et activer le transfert d'agent sur les hôtes cibles ; de cette façon, l'échange d'informations d'identification sera acheminé vers votre agent local sans avoir à copier votre clé privée.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X