2

В общем, я мог слушать в реальном времени аудио на удаленном компьютере как:

ssh me@gate rec -t mp3 - | play -

Например, на компьютере с именем gate я мог выполнить команду rec (или sox), и аудиопоток передается по сети, поэтому я мог воспроизводить его в реальном времени с помощью команды play (или sox).

Это работает хорошо, особенно потому, что у меня есть доступ к gate пароля из моего ноутбука (с использованием authorized_keys & authorized_keys2).

Но моя топология:

+----+  internet   +------+  lan   +----------+
| my | ----------> | gate | -----> | internal |
+----+             +------+        +----------+

и мне нужно выполнить rec во internal компе, и его стандартный stdout должен быть передан команде play на my компьютере.

Итак, когда я каскадирую (вкладываю) ssh вроде:

ssh -t me@gate ssh me@internal rec -t mp3 -

(обратите внимание на -t для ssh)

  • таким образом, доступ к gate осуществляется без пароля
  • на gate выполняется второй (вложенный) ssh
  • поэтому internal просит у меня пароль (-t)
  • и когда я ввожу пароль, internal правильно начинает rec команды
  • и я мог наблюдать полученный бинарный мусор на моем локальном терминале.

К сожалению, это не работает, когда я пытаюсь подключиться к play , например, это

ssh -t me@gate ssh me@internal rec -t mp3 - | play -

не работает, потому что строка « Password: была перенаправлена (например, я не запрашивал пароль), и play запуталась.

Настройка доступа без пароля между me@gate -> me@internal вероятно, могла бы решить проблему, но я не хочу этого - я хочу вручную ввести пароль для internal комп.

Есть идеи, как это решить?

2 ответа2

1

Я предполагаю, что internal прослушивает стандартный 22 порт.

Сначала постройте туннель:

ssh -N -L localhost:2222:internal:22 me@gate
# you can put it to background with &

Затем подключитесь через туннель. Это соединение закончится на internal:

ssh -p 2222 me@localhost rec -t mp3 - | play -

Вы должны спросить ваш пароль для internal несмотря на использование канала.


ssh -L … объясняется в моем ответе на другой вопрос.

0

Я предполагаю, что запрос пароля не помешает, если ваш ноутбук сможет получить доступ к internal напрямую?

Если это так, поиграйте с опцией конфигурации ProxyCommand .

Поместите что-то вроде этого в ваш ~/.ssh/config

Host internal-via-gate
    User me
    Hostname internal
    Port 22
    ProxyCommand ssh gate nc %h %p

Это должно позволить вам просто запустить ssh internal-via-gate , как если бы вы подключались напрямую.


Если нет, то, возможно, рассмотрите возможность переадресации портов:

Host internal-via-gate
    User me
    Hostname internal
    Port 22
    ProxyCommand ssh gate nc %h %p
    LocalForward 27015 localhost:27015

Затем подключитесь и авторизуйтесь (ssh internal-via-gate).

После того, как вы вошли в систему, запустите:

  • rec -t mp3 - | nc -l 27015 на пульте и
  • nc localhost 27015 | play - на локальной машине.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .