Попробуйте использовать параметр -t
для ssh для принудительного распределения tty.
ssh -t [email protected] 'echo -n Password:;
read -s password;
echo;
echo $password;'
EDIT: объяснение предлагаемого решения
Если не работает для входа в сеанс, но только команду вместо по умолчанию SSH не будет выделять псевдо терминальное устройство для запущенного процесса. Это поведение не является ошибкой все, но деликатно выбрано по дизайну.
Таким образом можно передавать двоичные данные, не интерпретируемые между различными машинами. Может быть что-то вроде:
ssh [email protected] 'cat remote_file' | local_program
передачи данных между двумя машинами таким образом, будет почти невозможно, если данные фильтруются драйвером терминала между - подумаешь тоннами управляющих последовательностей вы должны заботиться о!
Без какого-либо выделенного терминала нет возможности скрывать ввод пользователя. Любые попытки stty something
потерпят неудачу, так как нет никакого терминала!
Чтобы заставить ssh назначить псевдотерминал, даже если он не запущен в сеансе входа в систему, вам необходимо передать параметр -t
, чтобы принудительно назначить tty.
Похоже, я немного потрудился, что происходит. Но все же вход полезен :-) –