Commentaires
- serverfault.com/ questions / 241588 / …
- La méthode sécurisée consiste à générer une clé SSH avec ssh-keygen -t rsa -b 2048 et à utiliser cette clé pour connectez-vous au serveur distant comme alternative, vous pouvez installer " sshpash " puis vous pouvez ssh votre machine avec la commande suivante sshpass -p ' mot de passe ' ssh username @ servername
- La question vers laquelle il est redirigé nest pas la même que celle-ci. Celui-ci demande un moyen de lancer une session interactive.
Réponse
Sur Ubuntu, installez le sshpass
, puis utilisez-le comme ceci:
sshpass -p "YourPassword" ssh user@host
sshpass
prend également en charge la transmission du mot de passe interactif au clavier à partir dun fichier ou dune variable denvironnement, ce qui peut être une option plus appropriée dans toutes les situations où la sécurité est pertinente. Voir man sshpass
pour plus de détails.
Commentaires
- Bien que ce ne soit pas recommandé et pas une bonne pratique, cest exactement la réponse à la question. Pensez à utiliser les clés comme indiqué ci-dessus. Mais sil y a ' un problème technique majeur, cest la solution demandée
- Je ne fais que voter pour la réponse. Pas " rationnel pourquoi ne ' t vous le faites de cette façon à la place de " réponses. Juste la réponse. par conséquent, je vous ai voté à la hausse 🙂
- Je ne ' t déteste complètement sshpass, en fait je ' m en utilisant sur une base temporaire. Cependant, lutilisation de ' -p ' est inutile et indésirable. Définissez dabord la variable SSHPASS, puis faites sshpass -e ssh < ssh-args >.
- @Brad Si vous avez root sur la boîte, vous pouvez installer
sshpass
en utilisantyum --enablerepo=epel install sshpass
. - Cette réponse fonctionne également sur Manjaro ( Basé sur Arch).
Réponse
Si votre alternative est de mettre un mot de passe dans un script ou ssh
ligne de commande ou fichier texte brut, alors vous « re BEAUCOUP il vaut mieux utiliser une clé ssh
à la place. Dans tous les cas, toute personne ayant accès au compte où le script client ssh
est stocké pourrait lutiliser pour accéder au serveur, mais au moins dans le cas dune clé ssh
, OpenSSH la prend en charge correctement, vous naccordez pas laccès par dautres moyens que ssh
, il est plus facilement révoqué si nécessaire, etc …
Vous devrez expliquer pourquoi vous avez lobligation de ne pas utiliser de clé ssh.
Pensez également à utiliser une commande forcée (command="..."
dans le .ssh/authorized_keys
) afin que le client nait accès que pour exécuter la commande dont il a besoin sur le serveur plutôt que sur un shell complet.
Commentaires
- Lhôte distant est en fait une VM utilisée par dautres ingénieurs sans aucune ressource à risquer autre que des copies de code dautomatisation de test. Pour les besoins de la discussion, disons que le seul accès que jai est dajouter le fichier de script, pas dajouter des clés ssh dans
~/.ssh/
. - Cest ' est hautement artificiel. Un scénario un peu moins artificiel serait quun administrateur mal avisé du serveur ait désactivé les connexions par clé ssh (
PubkeyAuthentication no
in/etc/ssh/sshd_config
). Dans les deux cas, la meilleure solution consiste à résoudre le problème sous-jacent qui vous empêche deffectuer des connexions par clé ssh. A défaut, consultez la question pointée par Gilles . - @MichaelM vous navez pas à ajouter de clés ssh dans
~/.ssh/
. Ajoutez la clé où vous voulez et utilisezssh -i /path/to/id_rsa
- La réponse de Stackexchanges doit répondre à la question et non argumenter que la question est correcte. Jai un scénario valable pour cela. Je dois installer mon
~/.ssh/authorized_keys
dans 95 boîtes différentes. Jai écrit un script pour pousser automatiquement mon fichier allowed_keys, mais je demande toujours le mot de passe. Avoir le script pour demander le mot de passe une fois au début serait plus agréable. - Je suis daccord avec flarn2006.Vous ne pouvez pas dire " que cette question est stupide, alors voici ' une réponse à une autre question car je pense que ' est une meilleure question et jen connais la réponse ".
Réponse
Tout dabord, comme les autres répondants, je recommande dutiliser simplement les clés ssh. Mais je suppose que la personne contrôlant le serveur ne vous autorisera tout simplement pas à utiliser lauthentification par clé ssh et vous devez utiliser lauthentification par mot de passe.
Vous pouvez utiliser ControlMaster et ControlPath.
Soit A le serveur auquel vous n’avez pas accès (pensez à un serveur d’intégration continue comme Bamboo) et C l’hôte distant exécutant Ubuntu.
Maintenant, laissez B un ordinateur que vous contrôlez. Si vous le pouvez ne pas fournir un ordinateur B approprié, cette réponse ne fonctionnera pas.
- Créez une paire de clés et ajoutez la partie publique au fichier authorized_keys de B. Donnez à A la clé privée. Vous pouvez maintenant vous connecter à B depuis A sans mot de passe.
- Sur B manuellement
ssh -M -S /tmp/controlpath C
et entrez votre mot de passe à linvite. Après cela, vous devriez pouvoir vous connecter à C depuis A sans mot de passessh -S /tmp/controlpath C
.
Dans le script sur A, vous pouvez écrire ssh B ssh C dostuff
.
Chaque fois que vous redémarrerez B, vous devrez rétablir la connexion ssh -M -S /tmp/controlpath C
.