Получение stty: стандартный ввод: несоответствующий ioctl для устройства при использовании scp через туннель ssh

В заголовке я получаю следующее предупреждение при попытке scp через туннель ssh. В моем случае я не могу scp напрямую foo, потому что порт 1234 на устройстве foo пересылается на другую служебную панель в частной сети (а панель - это машина, которая дает мне туннель к 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 [email protected] -L3333:192.168.1.23:22
$ scp -P 3333 foo.py [email protected]:
[email protected] password:
stty: standard input: Inappropriate ioctl for device
foo.py                                          100% 1829     1.8KB/s   00:00

Кто-нибудь знает, почему я могу получить это предупреждение о Inappropriate ioctl for device?

Ответ 1

У меня возникла такая же проблема, когда я включил следующую строку в мой ~/bashrc:

stty -ixon

Цель этой строки состояла в том, чтобы разрешить использование Ctrl-s в обратном поиске bash.

Эта ссылка имеет решение (не доступно)

Версия веб-архива вышеуказанной ссылки

'stty' применяется к ttys, который у вас есть для интерактивных сеансов входа в систему..kshrc выполняется для всех сеансов, включая те, в которых stdin не a tty. Решение, кроме перемещения его в ваш .profile, - это сделать выполнение условным, поскольку он является интерактивной оболочкой.

Существует несколько способов проверки межсетевой оболочки. Следующее решает проблему для bash:

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