获取 stty:标准输入:通过 ssh 隧道使用 scp 时设备的 ioctl 不合适

新手上路,请多包涵

根据标题,当我尝试 scp 通过 ssh 隧道时,我收到以下警告。在我的情况下,我不能 scp 直接到 foo 因为设备 foo 上的端口 1234 被转发到专用网络上的另一台机器 bar (并且 bar 是给我一条到 192.168.1.23 的隧道的机器) .

 $ # -f and -N don't matter and are only to run this example in one terminal
$ ssh -f -N -p 1234 userA@foo -L3333:192.168.1.23:22
$ scp -P 3333 foo.py ubuntu@localhost:
ubuntu@localhost's password:
stty: standard input: Inappropriate ioctl for device
foo.py                                          100% 1829     1.8KB/s   00:00

有谁知道为什么我会收到关于 Inappropriate ioctl for device 的警告?

原文由 jonderry 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.3k
1 个回答

当我在 ~/.bashrc 中包含以下行时,我遇到了完全相同的问题:

 stty -ixon

此行的目的是允许在 bash 的反向搜索中使用 Ctrl-s

这个 gmane 链接有一个解决方案:( 原始链接失效) => gmane 链接的 Web 存档版本

‘stty’ 适用于 tty,用于交互式登录会话。 .kshrc 对所有会话执行,包括标准输入不是 tty 的会话。除了将其移动到您的 .profile 之外,解决方案是使其执行以它是交互式 shell 为条件。

有几种方法可以检查 interecative shell 。以下解决了 bash 的问题:

 [[ $- == *i* ]] && stty -ixon

原文由 mMontu 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题