Долгое время я искал это, я хотел бы знать, возможно ли передавать пароли в сценарии оболочки? Многие ответы вернулись без. Недавно я прочитал статью о том, как передавать пароли в сценарии оболочки. Я пробовал это, но это не похоже на работу. Это ссылка . Может ли кто-нибудь проверить и вернуться обратно? Также, пожалуйста, скажите мне, есть ли способ передать пароли в сценарии оболочки? Если нет, пожалуйста, скажите мне, как Linux получает ввод для пароля?
Под «вводом паролей» вы, скорее всего, подразумеваете ввод данных, которые не видны пользователю.
(предложено geirha) При использовании bash вы можете использовать -sопцию, чтобы предотвратить отображение напечатанных символов:
read -p "Password please: "-s pass
Или измените поведение терминала, чтобы скрыть напечатанные символы с помощью stty -echo(отключить echo). После прочтения пароля, встроенного в readпеременную оболочки (в приведенном ниже примере $pass), включите его снова с помощью stty echo. Поскольку новая строка из Enterскрыта для, вы должны напечатать новую строку, чтобы получить будущие выходные данные в новой строке.
readи printfвстроенные оболочки. sttyпредоставляется coreutilsпакетом, который установлен по умолчанию. Это означает, что этот фрагмент очень переносим.
Примечание: -pопция не стандартная, а из bash. Если вам нужно отобразить подсказку в других оболочках, используйте:
Я просто хочу дать пароль root удаленной системы в сценарии. Возможно ли это в вашем случае?
karthick87
@ karthick87: нет, этот скрипт просто собирает данные, которые пользователь вводит в интерактивном режиме. Если вы хотите поместить корневые пароли в сценарии, почему бы вам не рассмотреть возможность входа на основе ключей?
Лекенштейн
1
Чтение Bash также имеет возможность отключить эхо во время чтения в строке. См help '\read'.
гейра
В zshэто достижимо через read -s 'pw?Prompt text', где pwпеременная , где пароль будет помещен и -sэто флаг , чтобы ввести скрыть.
baldrs
2
В какую программу вы хотите передать пароль?
У меня работает скрипт по ссылке. Обратите внимание, что это не сценарий оболочки, а ожидаемый сценарий (необходимо expectустановить пакет`). Использование ожидаемого является распространенным способом автоматизации текстовых интерактивных программ.
Неинтерактивные sshвходы часто выполняются с использованием аутентификации на основе ключей с пустой парольной фразой.
Некоторые другие программы (например sudo) имеют параметры для чтения пароля из стандартного ввода.
Предоставление пароля в качестве параметра командной строки часто является проблемой безопасности, так как в большинстве систем любой пользователь может видеть любые другие процессы пользователей, включая аргументы командной строки, используя простые инструменты, такие как ps.
Поэтому, возможно, аутентификация по ключу работает для вас: используйте ssh-keygenдля создания ключа аутентификации (просто нажмите Enter, когда вас спросят о парольной фразе) и скопируйте его для удаленного пользователя, используя. ssh-copy-idЕсли аутентификация по ключу включена для sshd (по умолчанию), то ssh будет не спрашивать у вас пароль.
Флориан Диш
1
Скрипт никогда не должен обрабатывать пароли. Если приложение требует пароль, попросите его сам, или, если это невозможно, найдите более эффективные средства аутентификации в приложении. Пожалуйста, прочитайте http://mywiki.wooledge.org/BashFAQ/069
Есть способ хранить пароли в скрипте bash, но вы должны зашифровать скрипт, чтобы никто не мог его прочитать, или запустить какой-либо отладчик, чтобы увидеть, что именно он делает. Чтобы зашифровать скрипт bash / shell и сделать его исполняемым, попробуйте скопировать и вставить его здесь.
На приведенной выше странице все, что вам нужно сделать, это отправить свой сценарий (вы можете сначала отправить образец сценария для вашего спокойствия). Zip-файл будет создан для вас. Щелкните правой кнопкой мыши ссылку для скачивания и скопируйте предоставленный вами URL. Затем перейдите в окно UNIX и выполните следующие действия.
Монтаж:
wget link-to-the-zip-file
unzip the-newly-downloaded-zip-file
cd /tmp/KingLazySHIELD./install.sh /var/tmp/KINGLAZY/SHIELDX-(your-script-name)/home/(your-username)-force
То, что вышеупомянутая команда установки сделает для вас:
Он установит зашифрованный скрипт в каталог /var/tmp/KINGLAZY/SHIELDX-(your-script-name).
Он поместит ссылку на этот зашифрованный скрипт в любой каталог, который вы указали при замене /home/(your-username)- таким образом, он позволит вам легко получить доступ к скрипту без необходимости набирать абсолютный путь.
Гарантирует, что НИКТО не может изменить сценарий. Любые попытки изменить зашифрованный сценарий приведут к его неработоспособности ... пока эти попытки не будут остановлены или удалены
Гарантирует, что абсолютно никто не сможет сделать копии этого. Никто не может скопировать ваш скрипт в укромное место и попытаться обойти его, чтобы посмотреть, как он работает. Все копии скрипта должны быть ссылками на оригинальное местоположение , указанное вами при установке.
НОТА:
Я не верю, что это работает для интерактивных сценариев, которые запрашивают у пользователя ответ. Значения должны быть жестко закодированы в сценарии. Шифрование гарантирует, что никто не сможет увидеть эти значения, поэтому вам не нужно об этом беспокоиться.
help '\read'
.zsh
это достижимо черезread -s 'pw?Prompt text'
, гдеpw
переменная , где пароль будет помещен и-s
это флаг , чтобы ввести скрыть.В какую программу вы хотите передать пароль?
У меня работает скрипт по ссылке. Обратите внимание, что это не сценарий оболочки, а ожидаемый сценарий (необходимо
expect
установить пакет`). Использование ожидаемого является распространенным способом автоматизации текстовых интерактивных программ.Неинтерактивные
ssh
входы часто выполняются с использованием аутентификации на основе ключей с пустой парольной фразой.Некоторые другие программы (например
sudo
) имеют параметры для чтения пароля из стандартного ввода.Предоставление пароля в качестве параметра командной строки часто является проблемой безопасности, так как в большинстве систем любой пользователь может видеть любые другие процессы пользователей, включая аргументы командной строки, используя простые инструменты, такие как
ps
.источник
ssh-keygen
для создания ключа аутентификации (просто нажмите Enter, когда вас спросят о парольной фразе) и скопируйте его для удаленного пользователя, используя.ssh-copy-id
Если аутентификация по ключу включена для sshd (по умолчанию), то ssh будет не спрашивать у вас пароль.Скрипт никогда не должен обрабатывать пароли. Если приложение требует пароль, попросите его сам, или, если это невозможно, найдите более эффективные средства аутентификации в приложении. Пожалуйста, прочитайте http://mywiki.wooledge.org/BashFAQ/069
источник
Есть способ хранить пароли в скрипте bash, но вы должны зашифровать скрипт, чтобы никто не мог его прочитать, или запустить какой-либо отладчик, чтобы увидеть, что именно он делает. Чтобы зашифровать скрипт bash / shell и сделать его исполняемым, попробуйте скопировать и вставить его здесь.
На приведенной выше странице все, что вам нужно сделать, это отправить свой сценарий (вы можете сначала отправить образец сценария для вашего спокойствия). Zip-файл будет создан для вас. Щелкните правой кнопкой мыши ссылку для скачивания и скопируйте предоставленный вами URL. Затем перейдите в окно UNIX и выполните следующие действия.
Монтаж:
То, что вышеупомянутая команда установки сделает для вас:
Он установит зашифрованный скрипт в каталог
/var/tmp/KINGLAZY/SHIELDX-(your-script-name)
.Он поместит ссылку на этот зашифрованный скрипт в любой каталог, который вы указали при замене
/home/(your-username)
- таким образом, он позволит вам легко получить доступ к скрипту без необходимости набирать абсолютный путь.Гарантирует, что НИКТО не может изменить сценарий. Любые попытки изменить зашифрованный сценарий приведут к его неработоспособности ... пока эти попытки не будут остановлены или удалены
Гарантирует, что абсолютно никто не сможет сделать копии этого. Никто не может скопировать ваш скрипт в укромное место и попытаться обойти его, чтобы посмотреть, как он работает. Все копии скрипта должны быть ссылками на оригинальное местоположение , указанное вами при установке.
НОТА:
Я не верю, что это работает для интерактивных сценариев, которые запрашивают у пользователя ответ. Значения должны быть жестко закодированы в сценарии. Шифрование гарантирует, что никто не сможет увидеть эти значения, поэтому вам не нужно об этом беспокоиться.
источник
Вы можете просто сделать что-то вроде этого.
источник
источник