Ответ 1
Вы не можете использовать большинство SSH-клиентов. Вы можете обойти это с помощью SSH API, например Paramiko для Python. Будьте осторожны, чтобы не отменять все политики безопасности.
Как вы можете заставить SSH прочитать пароль из stdin, который он не делает по умолчанию?
Вы не можете использовать большинство SSH-клиентов. Вы можете обойти это с помощью SSH API, например Paramiko для Python. Будьте осторожны, чтобы не отменять все политики безопасности.
на основе этого сообщения вы можете:
Создайте команду, открывающую сеанс ssh с помощью SSH_ASKPASS (ищите SSH_ASKPASS на man ssh)
$ cat > ssh_session <<EOF
export SSH_ASKPASS="/path/to/script_returning_pass"
setsid ssh "your_user"@"your_host"
EOF
ПРИМЕЧАНИЕ.. Чтобы избежать ssh, чтобы попытаться спросить tty, мы используем setsid
Создайте script, который возвращает ваш пароль (обратите внимание эхо "эхо)
$ 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]
Старое сообщение возрождается...
Я нашел это, когда искал решение одной и той же проблемы, нашел что-то, и я надеюсь, что когда-нибудь он найдет это полезным:
SSH_ASKPASS
(export SSH_ASKPASS=/usr/bin/ssh-askpass
)setsid ssh [email protected]
)Это выглядит достаточно просто, чтобы быть безопасным, но еще не проверял (просто используя локальный защищенный контекст).
Здесь мы находимся.
Я не уверен, зачем вам нужна эта функциональность, но похоже, что вы можете получить это поведение с помощью ssh-keygen.
Он позволяет вам входить на сервер без использования пароля с помощью частного ключа RSA на вашем компьютере и открытого ключа RSA на сервере.
Список рассылки FreeBSD рекомендует expect библиотека.
Если вам нужен программный ssh-логин, вы действительно должны использовать логики с открытым ключом, однако, очевидно, их намного меньше таким образом, по сравнению с использованием внешней библиотеки для передачи пароля через stdin
.
Дистилляция этот ответ оставляет простой и общий script:
#!/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] password: