Как автоматизировать вход по SSH с паролем? Я настраиваю свою тестовую ВМ, поэтому строгая безопасность не рассматривается. SSH выбран для приемлемой безопасности с минимальной конфигурацией.
ех)
echo password | ssh id@server
Это не работает
Я помню, я делал это с некоторыми уловками, которые кто-то направлял меня, но я не могу вспомнить уловку, которую я использовал ...
ssh
password
automation
Eonil
источник
источник
Ответы:
Не используйте пароль. Сгенерируйте SSH-ключ без пароля и отправьте его на виртуальную машину.
Если у вас уже есть ключ SSH, вы можете пропустить этот шаг ... Просто нажмите Enterдля ключа и обеих паролей:
Скопируйте ключи на целевой сервер:
Теперь попробуйте войти в систему с помощью
ssh 'id@server'
и проверить:чтобы убедиться, что мы не добавили дополнительные ключи, которые вы не ожидали.
Наконец, проверьте вход в систему ...
Вы также можете захотеть использовать его,
ssh-agent
если хотите защитить свои ключи парольной фразой.источник
источник
ssh
один раз перед использованиемsshpass
, чтобы подтвердить отпечаток пальца RSA.bash_history
в виде простого текста на вашем компьютере.history -r
после команды, чтобы стереть вашу историю. Хороший вопрос, хотя.В то время как правильный ответ на ваш вопрос - sshkey , есть более безопасный способ - ключи SSH. Вы только три шага от решения:
Создайте пару ключей RSA :
затем скопируйте его на сервер одной простой командой :
Теперь вы можете войти без пароля :
источник
ssh-copy-id
.ssh-copy-id -i ~/.ssh/tatu-key-ecdsa user@host
Используйте ожидайте:
Пример:
источник
-oStrictHostKeyChecking=no -oUserKnownHostsFile=/dev/null
команду ssh, чтобы избежать принятия машины в known_hostsЭто может быть бесполезно для вас, но вы можете сделать это с помощью Perl:
источник
Я удивлен, что никто не упомянул
plink
изputty-tools
пакета в Ubuntu:Он также доступен в Windows, и его синтаксис в основном совместим с клиентом openssh.
источник
putty-tools
пакетеЕдиная регистрация SSH обычно достигается с помощью аутентификации с открытым ключом и агента аутентификации. Вы можете легко добавить свой тестовый ключ VM к существующему агенту аутентификации (см. Пример ниже). Существуют и другие методы, такие как gssapi / kerberos, но они более сложны.
sshpass
В ситуациях, когда
password
доступен только один способ аутентификации, sshpass может использоваться для автоматического ввода пароля. Пожалуйста, обратите особое внимание на раздел « Безопасность » на странице руководства . Во всех трех вариантах пароль виден или хранится в незашифрованном виде в какой-то момент :Анонимный канал (рекомендуется sshpass)
Это довольно громоздко в bash, возможно, проще с языками программирования. Другой процесс может подключиться к вашему каналу / fd до того, как будет написан пароль. Окно возможностей довольно короткое и ограничено вашими процессами или корнем.
Переменная среды
Вы и пользователь root можете читать переменные окружения вашего процесса (т. Е. Ваш пароль) во время работы sshpass (
cat /proc/<pid>/environ | tr '\0' '\n' | grep ^SSHPASS=
). Окно возможностей намного длиннее, но все еще ограничено вашими собственными процессами или корнем, а не другими пользователями.Аргумент командной строки (наименее безопасный)
Это удобно, но менее безопасно, как описано на странице руководства. Аргументы командной строки видны всем пользователям (например
ps -ef | grep sshpass
). sshpass пытается скрыть аргумент, но все равно есть окно, в котором все пользователи могут видеть ваш пароль, переданный по аргументу.Примечание
Задайте для переменной bash HISTCONTROL значение
ignorespace
илиignoreboth
и добавьте к своим чувствительным командам пробел. Они не будут сохранены в истории.SSH аутентификация с открытым ключом
Пароль очень важен. Любой, кто получит файл с закрытым ключом, не сможет использовать его без ключевой фразы.
Настройте агент аутентификации SSH
Подключите как обычно
Преимущество заключается в том, что ваш закрытый ключ зашифрован, и вам нужно ввести его пароль только один раз (с помощью более безопасного метода ввода).
источник
Вы уверены, что не хотите использовать ключи SSH, а не пароли? Таким образом, это безопасно и автоматически.
источник
В зависимости от ваших потребностей в автоматизации, возможно, Ansible подойдет для вас. Он может прекрасно управлять такими вещами, как запрос пароля, запрос пароля sudo, различные способы изменения использования, безопасное использование зашифрованных секретов (хранилище).
Если это не подходит, я бы предложил Expect, как предложено в другом ответе.
источник