Как заставить ssh получить пароль от stdin

Как вы можете заставить SSH прочитать пароль из stdin, который он не делает по умолчанию?

Вы не можете использовать большинство клиентов SSH. Вы можете обойти это с помощью SSH API, например Paramiko для Python. Будьте внимательны, чтобы не отменять все политики безопасности.

на основе этого сообщения вы можете сделать:

Создайте команду, открывающую сеанс ssh с помощью SSH_ASKPASS (ищите SSH_ASKPASS на man ssh )

$ cat > ssh_session < 

ПРИМЕЧАНИЕ. Чтобы избежать ssh, чтобы попытаться спросить tty, мы используем setid

Создайте скрипт, который возвращает ваш пароль (обратите внимание на эхо-эхо )

 $ echo "echo your_ssh_password" > /path/to/script_returning_pass 

Сделать их исполняемыми

 $ chmod +x ssh_session $ chmod +x /path/to/script_returning_pass 

попробуй

 $ ./ssh_session 

Имейте в виду, что ssh означает безопасную оболочку, и если вы храните своего пользователя, хоста и пароль в текстовых файлах, вы вводите в заблуждение инструмент, создавая возможный разрыв в безопасности

Вы можете использовать sshpass, например, в официальных репозиториях debian . Пример:

 $ apt-get install sshpass $ sshpass -p 'password' ssh [email protected] 

Старое сообщение возрождается …

Я нашел это, когда искал решение одной и той же проблемы, я нашел что-то, и я надеюсь, что когда-нибудь он найдет это полезным:

  1. Установите программу ssh-askpass (apt-get, yum …)
  2. Установите переменную SSH_ASKPASS ( export SSH_ASKPASS=/usr/bin/ssh-askpass )
  3. От терминала открывают новое ssh-соединение без неопределенной переменной TERMINAL ( setsid ssh [email protected] )

Это выглядит достаточно просто, чтобы быть в безопасности, но еще не проверял (просто используя локальный защищенный контекст).

Мы здесь.

Я не уверен, зачем вам нужна эта функциональность, но, похоже, вы можете получить это поведение с помощью ssh-keygen.

Он позволяет вам входить на сервер без использования пароля с помощью частного ключа RSA на вашем компьютере и открытого ключа RSA на сервере.

http://www.linuxproblem.org/art_9.html

Список рассылки FreeBSD рекомендует библиотеку ожиданий.

Если вам нужен программный ssh-логин, вы действительно должны использовать учетные записи с открытым ключом , однако, очевидно, что в этом случае гораздо меньше отверстий для обеспечения безопасности по сравнению с использованием внешней библиотеки для передачи пароля через stdin .

Дистилляция этого ответа оставляет простой и общий сценарий:

 #!/bin/bash [[ $1 =~ password: ]] && cat || SSH_ASKPASS="$0" DISPLAY=nothing:0 exec setsid "[email protected]" 

Сохраните его как pass , выполните chmod +x pass а затем используйте его следующим образом:

 $ echo mypass | pass ssh [email protected] ... 

Если его первый аргумент содержит password: тогда он передает свой вход на свой вывод ( cat ), иначе он запускает то, что было представлено после настройки в качестве программы SSH_ASKPASS .

Когда ssh обнаружит SSH_ASKPASS AND DISPLAY , он запустит программу, на которую SSH_ASKPASS , передав ей [email protected]'s password:

  • ASP.NET Identity default Password Hasher, как он работает и безопасен ли он?
  • Перемещение старых паролей в новый алгоритм hashирования?
  • Как заставить Chrome запомнить пароль для формы AJAX?
  • yii CPasswordHelper: hashPassword и verifyPassword
  • Regex для проверки надежности пароля.
  • Должен ли я поддерживать Unicode в паролях?
  • Какова наилучшая практика для работы с паролями в репозиториях git?
  • Безопасно ли хранить пароли в файлах cookie?
  • Java 256-битное шифрование на основе AES на основе паролей
  • Отключить функциональность браузера «Сохранить пароль»
  • Ссылка - проверка пароля
  • Давайте будем гением компьютера.