J'utilise Ubuntu 12.04. J'utilise ssh pour me connecter à de nombreux serveurs quotidiennement, donc j'ai mis leurs paramètres dans le fichier .ssh / config ; 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.
Réponses:
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.
la source
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.
Mon exemple d'alias est:
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):
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
la source
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é:
Copiez ensuite la clé sur vos serveurs / postes de travail:
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.
la source
sshpass -p $PASSWORD ssh $USERNAME@$HOST "echo `cat ~/.ssh/id_rsa` >> /home/$USERNAME/.ssh/authorized_keys"
mais ce programme est plus propre et rend l'intention claire.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.
la source
J'utilise ce script depuis le
~/.local/bin
répertoireCe qui me permet de spécifier la phrase secrète comme
#PS <password>
dans le.ssh/config
fichier.Mais, comme tout le monde le dit, il vaut mieux l'utiliser
ssh-keys
avecssh-agent
quand c'est possiblela source
La bonne façon de gérer cette situation consiste à utiliser un agent ssh basé sur la session. Voici comment:
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à!
la source
Vous pouvez le faire de manière plus sûre en utilisant sshpass
Définissez votre mot de passe sans historique
export PS = your_password ; history -d $ (history 1)
Définissez l'alias d'hôte comme ci-dessus dans ~ / .ssh / config
Utilisez ssh pass pour utiliser la variable d'environnement et connectez-vous à la machine requise en une seule commande
sshpass -p $ PS ssh host_alias
Votre environnement contient votre mot de passe et il est risqué que tout script en cours d'exécution puisse divulguer ce mot de passe si vous ne savez pas ce que vous exécutez
la source
sshpass -p $PS ...