9
votes

Émouler SSH Server à des fins de test

Je dois écrire un test pour le script de déploiement qui télécharge des fichiers via SSH, mais j'aimerais ne pas en dépendre de la configuration des serveurs externes. Voici comment je le vois:

  1. Créez 2 démons SSH sans authentification sur différents ports d'interface de bouclage.
  2. Exécutez le script de déploiement sur ces deux ports

    La seule question est la suivante: comment exécuter ces démons-adémons ssh factice.

    J'utilise Python et Tissu.


0 commentaires

3 Réponses :


1
votes

Réimplémenter un démon SSH n'est pas trivial.

Si votre seul problème est que vous ne voulez pas qu'ils dépendent des configurations existantes, vous pouvez démarrer un nouveau sshd avec -f pour spécifier un spécifique. Configuration et -P à exécuter sur un port donné.

Vous pouvez utiliser os.System pour passer des appels à la coquille: xxx


1 commentaires

C'est une bonne idée et je l'ai presque travaillé, mais je suis resté coincé avec SSH-Agent qui ne peut pas fonctionner deux fois avec un fichier agréé_keys spécifique. Quoi qu'il en soit, merci pour votre réponse!



7
votes

Si vous voulez un contrôle total sur les actions du serveur (par exemple, afin de simuler diverses conditions de problème et de faire des tests vraiment en profondeur), je vous recommande tordu : Comme cet article le montre, il est vraiment facile de configurer votre propre serveur SSH personnalisé.

Si vous préférez utiliser un serveur SSH existant, choisissez-en un de la liste ici ( ou utilisez celui qui est livré avec votre système, le cas échéant; ou peut-être sshwindows si vous êtes sous Windows) et exécutez-le avec Subprocess de Python dans le cadre de la démarrage de votre Tests.


1 commentaires

Merci d'une idée utile, mais je ne fais qu'est une API de tissu patché de singe pour exécuter toutes les commandes sur le serveur local. Je vais marquer votre commentaire car il a la meilleure solution de toute façon.



1
votes

Une autre option consiste à faire tourner un conteneur dockerisé avec le service SSHD fonctionnant. Vous pouvez utiliser une image Docker comme celles-ci:

  • https://github.com/kabirbaidhya/fakeerver Li>
  • https://github.com/panubo/docker-sshd . Li > ul>

    J'ai utilisé ceci pour tester un script de déploiement (fait sur le dessus du tissu). p>

    Voici comment vous l'utilisez. p>

    Tirez l'image. p> xxx pré>

    Définissez les touches autorisées pour le serveur. p> xxx pré>

    exécutez le FAKESERVER. P>

    ➜ ssh tester@localhost -p 2222
    ➜ ssh tester@localhost -p 2222 "echo 'Hello World'"
    


0 commentaires