Si vous ne voulez pas vraiment utiliser une paire de clés publique / privée, vous pouvez écrire un expect
script pour saisir automatiquement le mot de passe en fonction de l'adresse de destination.
Edit: Ce que je veux dire, c’est que vous pouvez avoir un script qui, d’une part, permet expect
de saisir le mot de passe pour vous et, d’autre part, lit le mot de passe d’un utilisateur et d’un hôte donnés à partir d’un fichier de configuration. Par exemple, le script python suivant fonctionnera pour le scénario de journée ensoleillée:
#!/usr/bin/python
import argparse
from ConfigParser import ConfigParser
import pexpect
def main(args):
url = args.url
user, host = url.split('@', 1)
cfg_file = 'ssh.cfg'
cfg = ConfigParser()
cfg.read(cfg_file)
passwd = cfg.get(user, host)
child = pexpect.spawn('ssh {0}'.format(url))
child.expect('password:')
child.sendline(passwd)
child.interact()
if __name__ == '__main__':
parser = argparse.ArgumentParser(description='Run ssh through pexpect')
parser.add_argument('url')
args = parser.parse_args()
main(args)
et le format du fichier de configuration serait le suivant:
[user_1]
host1 = passwd_1
host2 = passwd_2
[user_2]
host1 = passwd_1
host2 = passwd_2
Remarque: comme expliqué, le script python aurait besoin d'être beaucoup plus complexe pour gérer toutes les erreurs possibles et les messages de questions de ssh et toutes les URL possibles (dans l'exemple, il est supposé que ce sera quelque chose comme user@host
, mais la partie utilisateur isn ' t utilisé la plupart du temps), mais l’idée de base serait toujours la même. En ce qui concerne le fichier de configuration, vous pouvez utiliser un fichier de configuration différent ou utiliser .ssh/config
et écrire votre propre code pour analyser ce fichier et obtenir le mot de passe d'un utilisateur et d'un hôte donnés.