Si vous ne souhaitez pas vraiment utiliser une paire de clés publiques/privées, vous pouvez écrire une clé de type expect
script pour saisir automatiquement le mot de passe à votre place 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, utilise expect
pour saisir le mot de passe à votre place et, d'autre part, lit le mot de passe pour un utilisateur et un hôte donnés à partir d'un fichier de configuration. Par exemple, le script Python suivant fonctionnera pour le scénario de la 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
Note : Comme expliqué, le script Python devrait être beaucoup plus complexe pour gérer toutes les erreurs possibles et les messages d'interrogation 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 n'est pas utilisée la plupart du temps), mais l'idée de base reste 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 pour un utilisateur et un hôte donnés.