scp en utilisant un mot de passe sur la command line

J'essaie d'écrire un script qui déploiera une création créée sur ma machine de bureau (windows / cygwin) vers une machine dans mon environnement de test (linux).

J'aimerais utiliser Scp pour copyr la compilation sur la machine cible. Le seul count sur la machine cible est root et je ne peux pas créer un user spécial pour cette tâche. L'user root est incapable de se connecter à l'aide d'une key ssh (je soupçonne que cela est configuré sur le server ssh, mais je ne sais pas quelles options de configuration le contrôlent). En tout cas, je ne peux pas modifier la configuration du server ssh.

Mon ordinateur de bureau utilise Cygwin, et j'ai installé ssh. Ce dont j'ai besoin, c'est la command line-fu qui me permettra de mettre le mot de passe en command line.

Je suis conscient des dangers d'avoir un mot de passe en text clair dans un script shell, mais ce n'est pas une préoccupation ici.

OMI, votre meilleur pari est d'utiliser une sorte de script attendu. Mes astuces habituelles pour lancer un mot de passe à une command comme celle-ci ne fonctionnent pas dans mon installation Cygwin.

Je vous recommand d'utiliser une key ssh à cette fin. Si vous pouvez vous connecter en tant que root, vous pouvez également modifier la configuration du server ssh.

Comme option suivante, vous pouvez définir la variable d'environnement SSH_ASKPASS pour pointer vers un script que vous écrivez, ce script doit simplement sortir le mot de passe sur stdout.

Il existe quelques conditions préalables pour que SSH_ASKPASS fonctionne:

  • La command ssh ne doit pas avoir access à une tty.
  • La command ssh doit penser qu'elle a access à un server X. Il devrait suffire d'avoir les variables d'environnement nécessaires, même si le server X auquel elles indiquent n'existe pas.
  • Le server doit prendre en charge l'authentification par mot de passe.

Un problème que j'ai rencontré lorsque j'ai essayé de faire ce qui précède avec un système embedded était un server ssh qui ne prenait pas en charge l'authentification par mot de passe. Au lieu de cela, il a utilisé le keyboard interactif, mais configuré de manière à ce qu'il ressemble à une authentification par mot de passe.

En dernier recours, si aucun des éléments ci-dessus ne fonctionne, vous devez envelopper la command ssh dans un script, ce qui fausse et alimente le mot de passe à travers cela. J'avais expect d'y parvenir.