Мне приходится много работать с SSH на разных серверах, где мне не разрешено хранить открытый ключ на удаленном сервере. Поэтому я не могу использовать SSH-ключи и SSH-агент.
Аутентификация выполняется через LDAP, поэтому всегда используется один и тот же пароль. Я хочу ввести свой пароль один раз за сеанс, который затем сохраняется где-то , и использовать его для всех дальнейших подключений.
Я много искал, и лучший способ найти - сохранить пароль в переменной среды и используйте sshpass, например:
SSHPASS = mypass
sshpass -e имя пользователя ssh @ имя сервера
Но мне не нравится идея знать, что мой пароль сохраняется в переменной среды. Есть ли лучший способ сделать это?
Судя по звуку, не совсем.
Я полагаю, вы могли бы обернуть sshpass в скрипт, чтобы не хранить пароль в вашем окружении, но тогда он будет записан в скрипте. По сути, если пароль должен быть задействован , вам, вероятно, просто придется с ним разобраться.
Одна из возможностей может заключаться в использовании сертификатов SSH вместо общих ключей, что обеспечивает большую детализацию и контроль (см. https://www.digitalocean.com/community/tutorials/how-to-create-an-ssh-ca -to-validate-hosts-and-clients-with-ubuntu ).
Кажется, что протокол Kerberos будет отмечать все, но Kerberos не обязательно является тем, что люди хотят использовать, и у меня есть сомнения об этом когда-либо серьезно думали. Но это обеспечит в значительной степени именно тот компромисс, который вы ищете (без общих ключей, но также и возможность входа в систему без пароля во время сеанса).
Промежуточным решением, которое может учитывать ваши потребности и проблемы / политики оператора сервера, может быть что-то вроде Teleport , которое обеспечивает промежуточный узел и довольно надежный контроль доступа.
tl; dr : Похоже, вам, возможно, придется укусить пулю, если вы не хотите раскрывать свой пароль, и лучше всего попытаться предложить решение, которое учитывает все проблемы, которые вызывают у администраторов Публичный.