Предположим, у меня есть сервер 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.