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

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

 Piotr Dobrogost18 февр. 2015 г., 13:46

Ответы на вопрос(7)

Ты можешь использоватьsshpass что, например, в официальномрепозитории Debian, Пример:

$ apt-get install sshpass
$ sshpass -p 'password' ssh [email protected]
 mike19 дек. 2018 г., 23:26
Доморощенный (macOS) запретил это :( " Мы выиграли'не добавляйте sshpass, потому что начинающим пользователям SSH слишком легко разрушить SSH 'с безопасностью. "
 Sridhar-Sarnobat17 дек. 2018 г., 20:14
к сожалению, это единственное решение, которое я использую, которое неотлично подходит для SSH Jumphosts. Альтернативаexpectчто яЯ думаю, это больше проблем, чем этос работой.

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

Создайте команду, которая открывает сессию SSH, используяSSH_ASKPASS (искать SSH_ASKPASS намужик сш)

$ cat > ssh_session 
 M. Barbieri22 февр. 2019 г., 15:42
Может кто-нибудь обновить решение, чтобы принять предложения из комментариев?
 Blaine06 янв. 2015 г., 04:18
Другое требование состоит в том, что DISPLAY должен быть установлен. Если вы используете X, вы выигрализаметить Если ты нет, вы будете. Чтобы сделать приведенный выше сценарий ssh_script более переносимым, добавьте следующее: export DISPLAY; DISPLAY = фиктивная
 mike30 дек. 2018 г., 01:01
Я использовал эту идею для получения пароля отpass, чтобы датьssh-add в общем случае, генерируя скрипт askpass по мере необходимости.milosophical.me/blog/2018/ssh-pass.html
 mike19 дек. 2018 г., 23:42
более того (или если вы нене иметь setsid) - в дополнение к настройке DISPLAY и SSH_ASKPASS, вам также может понадобиться указать STDIN из / dev / null, чтобы убедить ssh-add, что это 'не на терминале: ssh-add / path / to / key < / DEV / нуль

дистилляцияэтот ответ оставляет простой и общий скрипт:

#!/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 А ТАКЖЕDISPLAY установить, он запустит программу, указаннуюSSH_ASKPASSПередав ему подсказку[email protected]'s password:

 villapx18 июл. 2018 г., 00:34
Вам также может понадобиться пройти-oStrictHostKeyChecking=no кssh команда, если у вас нетт SSH 'заглянул в этот хост раньше; в противном случае этоУкажите пользователю, доверяют ли они неизвестному ключу хоста. Очевидно, делать это только если выреконечно что вы доверяете неизвестному ключу хоста.

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

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

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

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

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

Старый пост возрождается ...

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

устанавливатьSSH-askpass программа (apt-get, yum ...)УстановитьSSH_ASKPASS переменная ()export SSH_ASKPASS=/usr/bin/ssh-askpassИз терминала откройте новое ssh-соединение без неопределенной переменной TERMINAL ()setsid ssh [email protected]

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

Мы здесь.

Решение Вопроса

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

 pvoosten25 дек. 2018 г., 23:40
Это не должноЭто работает, потому что это вдохновит младших системных администраторов на написание сценариев с паролем SSH, запутанным в логике сценария. В среде сетевого и системного администрирования должно быть четкое разделение между конфиденциальной информацией, с одной стороны, и выполнением задач, с другой. Проверка подлинности пароля просто недостаточно безопасна. Поскольку ssh широко используется в контексте sysadmin, попытка держать пользователей подальше от безопасности только по паролю - хорошая идея.
 Sridhar-Sarnobat17 дек. 2018 г., 20:14
Любая идея, почему это не такт работаешь? Интуитивно понятно.

Ваш ответ на вопрос