web-dev-qa-db-fra.com

ajout d'un mot de passe à .ssh / config

J'utilise Ubuntu 12.04. J'utilise ssh pour me connecter à de nombreux serveurs quotidiennement, donc j'ai mis leurs paramètres dans . Ssh/config file; comme ça :

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

Existe-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 laissez-passer et l'envoie au serveur, donc je n'ai pas besoin de taper le mot de passe à chaque fois. De plus, je ne veux pas utiliser de paire de clés publique/privée.

30
Ajo Augustine

Non, il n'existe aucune méthode pour spécifier ou fournir sur la ligne de commande le mot de passe de manière non interactive pour l'authentification ssh à l'aide d'un mécanisme intégré openssh. Du moins pas ce que je sais. Vous pouvez coder en dur votre mot de passe dans le script attendu, mais ce n'est pas non plus une bonne solution.

Vous voudrez certainement utiliser des paires de clés pour l'authentification sans mot de passe comme Michael l'a déclaré, à la fin, la clé privée est à peu près un gros mot de passe dans le fichier.

32
Danila Ladner

Pour éviter la chaîne de commentaires: Oui, ce n'est pas sûr (pas même sans doute pas 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 un serveur de production potentiel sans réinitialisation/formatage complet.

Je voulais configurer cela car je ne pense pas que mon commutateur 2950 prend en charge les clés privées/publiques et j'espère à un moment donné acquérir cette connaissance, mais je n'y suis pas encore.

L'utilisation d'un alias et de sshpass peut être accomplie.

  1. Installer sshpass
  2. Modifiez votre fichier . 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 le recommanderais contre les paramètres gloabl)
  4. Utilisez un alias pour vous 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'utilisation est (référençant la question):

ssc server1

Remarque: Cela répond à la question du titre uniquement pour ceux qui utilisent des moteurs de recherche. Si vous utilisez des serveurs comme l'exemple de question, des paires de clés privées/publiques et non cette réponse doivent être utilisées

23
DarkSheep

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

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

ssh-keygen

Copiez ensuite la clé sur vos serveurs/postes de travail:

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

C'est tout. On ne vous demandera plus jamais le mot de passe.

Je recommande également de supprimer l'autorisation de mot de passe en général, mais cela dépend de vous.

14
Str82DHeaD

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

Comme Danila l'a mentionné, vous pouvez utiliser des scripts attendus, mais cela ne me dérangerait pas.

Je me demande ce que vous essayez de réaliser? Voulez-vous passer d'un serveur à un autre? Dans ce cas, vous souhaitez 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.

4
Eddy

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 secrète comme #PS <password> dans .ssh/config fichier.

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

2
mnach

La bonne façon de gérer cette situation consiste à utiliser un agent ssh basé sur la session. Voici comment:

$ eval `ssh-agent`
$ ssh-add /home/user/.ssh/your_key
Enter passphrase for /home/user/.ssh/your_key:

Le mot de passe sera ensuite maintenu valide pour le reste de la session. Vous n'avez besoin d'exécuter la première commande qu'une seule fois et vous pouvez ajouter autant de clés que vous le souhaitez par la suite. Lorsque la session est interrompue, l'agent l'est également. Il n'y a donc pas de stockage codé en dur d'un mot de passe.

Choqué qu'après si longtemps, cette réponse ne soit pas là!

0
pranalli