Если вы действительно не хотите использовать пару открытого / закрытого ключа, вы можете написать скрипт expect
, чтобы автоматически вводить пароль в зависимости от адреса назначения.
Изменить: я имею в виду, что у вас может быть сценарий, который, с одной стороны, использует expect
для ввода пароля для вас и, с другой стороны, считывает пароль для данного пользователя и хоста из конфигурации файл. Например, следующий сценарий python будет работать в сценарий солнечного дня:
#!/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)
и формат файла конфигурации будет выглядеть следующим образом:
[user_1]
host1 = passwd_1
host2 = passwd_2
[user_2]
host1 = passwd_1
host2 = passwd_2
Примечание. Как объяснялось, скрипт python должен быть намного сложнее обрабатывать все возможные ошибки и сообщения вопросов из ssh и всех возможных URL-адресов (в примере предполагается, что это будет что-то вроде [email protected]
, но часть пользователя больше не используется), но основная идея все равно будет такой же. При изменении конфигурационного файла вы можете использовать другой файл конфигурации или использовать .ssh/config
и написать свой собственный код для разбора этого файла и получения пароля для данного пользователя и хоста.