一般来说,我可以在远程计算机上实时监听音频:
ssh me@gate rec -t mp3 - | play -
例如,在名为gate
I 的计算机上,我可以执行命令rec
(或sox
),音频流通过网络传输,因此我可以通过play
(或sox
)命令实时重播。
这样可以正常工作,特别是因为我无需密码访问gate
我的笔记本(使用authorized_keys & authorized_keys2
)。
但我的拓扑结构是:
+----+ internet +------+ lan +----------+
| my | ----------> | gate | -----> | internal |
+----+ +------+ +----------+
我需要rec
在internal
comp中执行它,它stdout
应该通过管道输出到计算机中的play
命令my
。
所以,当我级联(嵌套)ssh
s时:
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
comp。
不知道怎么解决这个问题?
旁注:我想你可能有知识回答这个老问题。
—
Kamil Maciorowski
-t
没有要求密码...“ 禁用伪终端分配。 ”