Обмани программу, запускаемую из скрипта оболочки, чтобы думать, что она читает из терминала - PullRequest
0 голосов
/ 10 апреля 2011

Я хотел бы написать сценарий оболочки, который выполняет что-то вроде следующего

while read line; do
echo $line 
done<input.txt | ssh > output.txt

На данный момент это немного псевдокодия (оригинал на работе), но вы должны быть в состоянии сказать, что он делает. Для простых приложений это работает, но ssh проверяет ввод, чтобы узнать, является ли он стандартным.

Есть ли способ обмануть ssh, заставив его думать, что содержимое моего конвейера представляет собой терминал, а не канал?

РЕДАКТИРОВАТЬ: Извините, что не добавил это первоначально, это предназначено для того, чтобы ssh мог войти через скрипт оболочки (отвечая на запрос пароля)

Ответы [ 2 ]

3 голосов
/ 10 апреля 2011

ssh -t -t будет делать то, что вы хотите - это говорит ssh выделить псевдотерминал независимо от того, запущен ли он на самом деле.

2 голосов
/ 10 апреля 2011

Обновление

Эта проблема (после обновления вашего вопроса и различных комментариев выяснилось, что вы ищете способ удобного использования шифрования с открытым ключом) может быть решена с помощью«думать с ног на голову».

Вместо того, чтобы изо всех сил пытаться получить открытый ключ своих клиентов на сервер, который еще не аутентифицирует клиента, вы можете попытаться получить аутентифицированную идентификацию (закрытый ключ) с этого сервера ,

Простые условия: сгенерируйте пару ключей на сервере вместо клиента, а затем найдите способ получить пару ключей на клиенте.Сервер может поместить открытый ключ в свои авторизованные ключи заранее, чтобы клиент мог подключиться сразу.

Скорее всего,

  • проблема с передачей ключа легче решается(вы могли бы даже использовать «групповой» ключ для доступа от различных клиентов)
  • , если выбран менее защищенный механизм (удобство по сравнению с безопасностью), по крайней мере, только безопасность клиента снижается, а не так сильноэто сервера (напрямую).

Оригинальный ответ:

Краткий ответ: Нет.(это было бы дырой в безопасности для ssh, потому что ssh «доверяет» tty для ввода пароля и только tty)

Длинный ответ, вы можете попытаться подорвать / творчески использовать эмулятор терминала (посмотрите на скрипт/ scriptreplay для вдохновения).

Зачем вам это нужно?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...