login SSH avec mot de passe en clair comme paramètre?

Je dois me connecter à un user que j'ai créé sur un hôte distant exécutant Ubuntu. Je ne peux pas utiliser une key ssh car la connection ssh se fera à partir d'un script bash exécuté sur un server auquel je n'aurai pas access (pensez au server d'continuous integration comme Bamboo).

Je comprends que ce n'est pas une pratique idéale, mais je veux soit mettre l'hôte distant pour ne pas requestr le mot de passe ou être capable de se connecter avec quelque chose comme ssh --passsword foobar user@host , un peu comme MySQL vous permet de faire pour les connections.

Je ne trouve pas cela dans l' man ssh et je suis ouvert à toutes les alternatives pour contourner ce problème.

Sur Ubuntu, installez le packageage sshpass , puis utilisez-le comme ceci:

 sshpass -p 'YourPassword' ssh user@host 

sshpass prend également en charge le passage du mot de passe interactif au keyboard à partir d'un file ou d'une variable d'environnement, ce qui peut être une option plus appropriée dans toutes les situations où la security est pertinente. Voir man sshpass pour les détails.

Si votre alternative est de mettre un mot de passe dans un script ou une command line ssh ou un file de text brut, vous serez mieux à l'aise avec une key ssh . De toute façon, quiconque a access au count où le script client ssh est stocké pourrait l'utiliser pour accéder au server, mais au less dans le cas d'une key ssh , OpenSSH le prend en charge correctement, vous n'accordez pas access par d'autres moyens que ssh , il est plus facile de le révoquer si nécessaire, etc …

Vous devrez expliquer pourquoi vous avez besoin de ne pas utiliser une key SSH.

Pensez également à utiliser une command forcée ( command="..." dans le file .ssh/authorized_keys ) afin que le client n'ait access qu'à la command dont il a besoin sur le server plutôt qu'à un shell complet.

Tout d'abord, comme les autres répondants, je recommand d'utiliser simplement les keys ssh. Mais je suppose que la personne qui contrôle le server ne va tout simplement pas vous permettre d'utiliser l'authentification par key ssh et vous devez utiliser l'authentification par mot de passe.

Vous pouvez utiliser ControlMaster et ControlPath.

Soit A le server auquel vous n'aurez pas access (pensez au server d'continuous integration comme Bamboo) et C l'hôte distant exécutant Ubuntu.

Maintenant, laissez B être un ordinateur que vous contrôlez. Si vous ne pouvez pas fournir un ordinateur B adapté, cette réponse ne fonctionnera pas.

  1. Créez une paire de keys et ajoutez la partie publique au file authorized_keys de B. Donnez A la key privée. Maintenant vous pouvez vous connecter à B depuis A sans mot de passe.
  2. Sur B manuellement ssh -M -S /tmp/controlpath C et entrez votre mot de passe à l'invite. Après cela, vous devriez pouvoir vous connecter à C depuis A sans mot de passe ssh -S /tmp/controlpath C

Dans le script sur A, vous pouvez écrire ssh B ssh C dostuff .

Chaque fois que vous redémarrez B, vous devrez rétablir la connection ssh -M -S /tmp/controlpath C