Назад | Перейти на главную страницу

Есть ли способ выполнить вход по SSH без пароля, когда сервер разрешает только интерактивную аутентификацию с клавиатуры?

Предположим, у меня есть сервер foo.com который допускает только интерактивную аутентификацию с клавиатуры, и я не могу это изменить. Это значит, что я могу,

sshpass -p PASSWORD ssh foo.com

но я не могу создать публичные / частные ключи для входа без пароля.

Если я хочу автоматизировать доступ к этому серверу, то есть ssh без пароля, я могу просто создать alias ssh_foo="sshpass -p PASSWORD ssh foo.com", но тогда мне нужно создать псевдонимы для scp, для sftp, и, как правило, он не будет работать с другими программами, которые их используют, например графические программы на основе sftp которые монтируют удаленные папки. Поэтому я ищу более общее решение.

В частности, есть ли способ настроить мой .ssh/config файл, чтобы разрешить вход без пароля в этом случае? Тогда это должно работать для всего. Я чувствую себя какой-то умной комбинацией ProxyCommand и LocalCommand может это сделать, но я не могу понять что.

(Обратите внимание, я понимаю последствия этого для безопасности, мне просто любопытно, сможете ли вы это сделать)

ssh -p предназначен для указания удаленного порта, SSH не берет пароли из командной строки или из файлов.

Самый простой способ добиться этого - мультиплексировать соединение, войдите один раз с помощью ssh -fN (который мощь можно автоматизировать путем передачи пароля по конвейеру), который создаст главное устройство управления и будет использовать это соединение для мультиплексирования всех остальных. Посмотрите на ControlMaster и ControlPath варианты в вашем дружеском man 5 ssh_config.

В противном случае использование диспетчера терминалов а ля tmux/terminator может быть вашим единственным средством, но это потребует обертывания всех команд, которые полагаются на SSH.