Jeśli tak naprawdę nie chcesz używać pary kluczy publiczny / prywatny, możesz napisać expect
skrypt, który automatycznie wprowadzi hasło w zależności od adresu docelowego.
Edycja: Mam na myśli to, że możesz mieć skrypt, który z jednej strony używa expect
hasła do ciebie, az drugiej strony odczytuje hasło dla danego użytkownika i hosta z pliku konfiguracyjnego. Na przykład następujący skrypt w języku Python będzie działał w scenariuszu ze słonecznym dniem:
#!/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)
a format pliku konfiguracyjnego byłby następujący:
[user_1]
host1 = passwd_1
host2 = passwd_2
[user_2]
host1 = passwd_1
host2 = passwd_2
Uwaga: Jak wyjaśniono, skrypt w języku Python musiałby być znacznie bardziej skomplikowany, aby obsłużyć wszystkie możliwe błędy i komunikaty pytań z ssh i wszystkich możliwych adresów URL (w przykładzie założono, że będzie to coś podobnego user@host
, ale część użytkownika nie jest używane przez większość czasu), ale podstawowa idea pozostanie taka sama. Jeśli chodzi o plik konfiguracyjny, możesz użyć innego pliku konfiguracyjnego lub użyć .ssh/config
i napisać własny kod, aby przeanalizować ten plik i uzyskać hasło dla danego użytkownika i hosta.