加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

unix – 为什么OpenSSH RequestTTY导致stderr重定向到stdout?

发布时间:2020-12-15 21:17:00 所属栏目:安全 来源:网络整理
导读:当使用-T和-t运行相同的ssh命令时,任何stderr输出分别到达stderr和stdout. 没有pty分配: ssh -T user @ host“echo 2 foo”1 / tmp / out 2 / tmp / err 输出写入/ tmp / err. 使用pty分配:ssh -t user @ host“echo 2 foo”1 / tmp / out 2 / tmp / err
当使用-T和-t运行相同的ssh命令时,任何stderr输出分别到达stderr和stdout.

没有pty分配:
ssh -T user @ host“echo>& 2 foo”1> / tmp / out 2> / tmp / err

输出写入/ tmp / err.

使用pty分配:ssh -t user @ host“echo>& 2 foo”1> / tmp / out 2> / tmp / err

输出现在写入/ tmp / out.

我有点理解,使用pty模拟完整的伪屏幕并且输出处于原始模式.然后,发送到屏幕的输出通过stdout发送回ssh,ssh的tty也设置为原始模式.有人可以进一步解释一下吗?

解决方法

tty没有单独的输出和错误通道.只有一个输出通道;无论你写什么,只需转到CRT,串口,终端窗口,调制解调器,打印机或连接到tty的任何东西.

在为运行命令分配tty时,ssh理论上可以将命令的stdin和stdout附加到tty,而相反,将命令的stderr附加到与tty完全独立的单独的stderr通道(管道).但是,这并不符合以下惯例:在tty上运行的命令应该将其所有3个stdio通道连接到同一个tty,并且某些命令可能会混淆或表现不同.所以ssh选择遵循惯例.

当不使用tty时,ssh可以自由地将命令的stdin,stdout和stderr附加到3个单独的单向管道.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读