Итак, я пытаюсь это:
ssh -t -e none host "sudo cat /location/to/some/file.txt" | xclip -selection c
С опцией -t
, я должен получить запрос пароля для sudo
. Но я не. Без этого в разрешении отказано.
То, что я получаю для приглашения sudo, с опцией -t, - это новая строка, где я попытался ввести пароль sudo, но ничего не происходит, и через некоторое время он выдает сообщение Connection to host closed
.
Есть ли другой способ (с использованием только терминала) копировать защищенный файл с удаленного компьютера на локальный.
РЕДАКТИРОВАТЬ:
@ Фелисьен прав. ssh
замаскирован из-за трубы |
. Запрос пароля также пройдет через канал и изменит ввод xclip
В то время как ответ @Félicien обеспечивает причину проблемы, я нашел обходное решение, как решить его при помощи промежуточного временного файла и команды tee
:
ssh -t -e none -i /path/to/id_rsa user@host "sudo cat /location/to/some/file.txt" | \
tee /tmp/xclip.txt && \
sed '1d' /tmp/xclip.txt | \
xclip -selection c
ssh
команда будет передана по каналу к команде tee
это запишет это в новый файл в /tmp
.sed '1d'
произведет содержание нового файла без первой строки, которая является [sudo] password for <user>:
и наконец этот вывод плохо быть переданным по каналу к xclip
..bashrc
сделать вещи более простыми в будущем. Из того, что я протестировал, -t
опция работает, но маскируется из-за канала |
в команде. Терминал ожидает Вас для помещения пароля, но Вы не видите его.
Можно поместить пароль, когда терминал, кажется, "ожидает", но риск состоит в том, что подсказка выяснения пароля также пройдет канал и изменит вход xclip