Мне нужно создать скрипт, который автоматически вводит пароль для ssh
клиента OpenSSH .
Допустим, мне нужен SSH myname@somehost
с паролем a1234b
.
Я уже попробовал ...
#~/bin/myssh.sh
ssh myname@somehost
a1234b
... но это не работает.
Как я могу получить эту функциональность в сценарий?
ps -aux
обычно, вы не должны запускать команды, набирая ваш пароль, потому что другие пользователи на том же компьютере могут видеть пароль при запускеps -aux
. если это целесообразно, вы также хотите использовать аутентификацию с открытым ключом, как указано в другом ответе. это позволяет вам отделить информацию аутентификации от вашего скрипта, чтобы вы могли без проблем делиться своим скриптом с другими, а затем решите включить шифрование в вашей папке ~ / .ssh без шифрования вашего скрипта.sshpass
.После нескольких месяцев поиска ответа на вопрос я наконец нашел лучшее решение: написание простого сценария.
Поместите это
/usr/bin/exp
, тогда вы можете использовать:exp <password> ssh <anything>
exp <password> scp <anysrc> <anydst>
Готово!
источник
Использовать аутентификацию с открытым ключом: https://help.ubuntu.com/community/SSH/OpenSSH/Keys
На исходном хосте выполните это только один раз:
Вот и все, после этого вы сможете делать ssh без пароля.
источник
Вы могли бы использовать сценарий ожидает. Я не писал ни разу довольно давно, но это должно выглядеть так, как показано ниже. Вам нужно будет руководить сценарием с
#!/usr/bin/expect
источник
/bin/myssh.sh: 2: spawn: not found /bin/myssh.sh: 3: expect: not found /bin/myssh.sh: 4: send: not found /bin/myssh.sh: 5: expect: not found /bin/myssh.sh: 6: send: not found
which expect
#!/usr/bin/env expect
interact
в конец, чтобы ssh-сессия была на самом деле интерактивнойВариант I
Вариант II
источник
-p
Флаг для указания номера порта.SYNOPSIS sshpass [-ffilename|-dnum|-ppassword|-e] [options] command arguments
yum -y install epel-release
а затемyum -y install sshpass
sshpass + autossh
Одним из приятных бонусов уже упоминавшегося
sshpass
является то, что вы можете использовать егоautossh
, устраняя еще больше интерактивной неэффективности.Это позволит выполнить автоматическое повторное подключение, если, например, ваш Wi-Fi прерывается при закрытии ноутбука.
источник
-f
autossh в этой комбинации, потому чтоwhen used with autossh, ssh will be *unable* to ask for passwords or passphrases.
harding.motd.ca/autossh/README.txt также superuser.com/questions/1278583/…sshpass
с лучшей безопасностьюЯ наткнулся на этот поток, когда искал способ подключиться к ssh на заболоченном сервере - потребовалось больше минуты, чтобы обработать попытку соединения SSH, и истекло время, прежде чем я смог ввести пароль. В этом случае я хотел иметь возможность предоставить свой пароль сразу же, когда приглашение будет доступно.
(И если до боли не ясно: если сервер находится в этом состоянии, слишком поздно настроить регистрацию с открытым ключом.)
sshpass
для спасения. Тем не менее, есть лучшие способы обойти это, чемsshpass -p
.Моя реализация пропускает непосредственно к интерактивной подсказке пароля (не теряя времени на просмотр возможности обмена открытым ключом) и никогда не раскрывает пароль в виде простого текста.
источник
trap
предотвратить утечкуSSHPASS
переменной ctrl-CPreferredAuthentications=keyboard-interactive
это не сработало, но заменить его наPreferredAuthentications=password
работало.Так я захожу на свои серверы.
#! / Bin / Баш
sshpass -p mypassword ssh root @ $ 1
И поэтому...
источник
ссылка: https://www.linkedin.com/pulse/youre-doing-wrong-ssh-plain-text-credentials-robert-mccurdy?trk=mp-reader-card
источник
Я не думаю, что видел, чтобы кто-то предложил это, и ОП просто сказал "сценарий", так что ...
Мне нужно было решить ту же проблему, и мой самый удобный язык - это Python.
Я использовал библиотеку paramiko. Кроме того, мне также нужно было выдавать команды, для которых мне понадобятся расширенные разрешения
sudo
. Оказывается, sudo может принять свой пароль через стандартный ввод через флаг "-S"! Увидеть ниже:Надеюсь, это кому-нибудь поможет. Моим примером использования было создание каталогов, отправка и распаковка файлов и запуск программ на ~ 300 серверах одновременно. Таким образом, автоматизация была первостепенной. Я попробовал
sshpass
,expect
а потом придумал это.источник
Я получил это работает следующим образом
.ssh / config был изменен, чтобы исключить приглашение да / нет - я нахожусь за брандмауэром, поэтому я не беспокоюсь о подделанных ключах ssh
Создайте файл ответов для ожидаемого, т.е. answer.expect
Создайте свой bash-скрипт и просто ожидайте в файле
Получает 128 катодов данных hadoop, обновленных с помощью новой конфигурации - при условии, что вы используете монтирование NFS для файлов hadoop / conf
Надеюсь, что это кому-то поможет - я Windows Numpty, и это заняло у меня около 5 часов, чтобы выяснить!
источник
Если вы делаете это в системе Windows, вы можете использовать Plink (часть PuTTY).
источник
У меня есть лучшее решение, которое включает в себя вход в систему с вашей учетной записью, чем переход на пользователя root. Это скрипт bash
http://felipeferreira.net/index.php/2011/09/ssh-automatic-login/
источник
Ответ @abbotto у меня не сработал, пришлось сделать что-то по-другому:
источник
Мне удалось заставить это работать с этим:
источник
В приведенном ниже примере я напишу решение, которое я использовал:
Сценарий: я хочу скопировать файл с сервера, используя скрипт sh:
источник
Используйте этот скрипт, чтобы включить его в скрипт. Первый аргумент - это имя хоста, а второй - пароль.
источник
Чтобы подключить удаленный компьютер через сценарии оболочки, используйте следующую команду:
где
IPADDRESS
,USERNAME
иPASSWORD
являются входными значениями, которые необходимо предоставить в сценарии, или, если мы хотим предоставить во время выполнения, используйте команду «read».источник
StrictHostKeyChecking=no
без объяснения последствий.нажмите клавишу ввода и затем введите пароль вашей системы и, наконец, введите пароль вашего сервера
источник