web-dev-qa-db-ja.com

sttyの取得:標準入力:sshトンネルを介してscpを使用する場合のデバイスの不適切なioctl

タイトルごとに、scpトンネルをsshしようとすると、次の警告が表示されます。私の場合、デバイスfooのポート1234がプライベートネットワーク上の別のマシンバーに転送されているため、scpを直接fooにできません(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 [email protected] -L3333:192.168.1.23:22
$ scp -P 3333 foo.py [email protected]:
[email protected]'s password:
stty: standard input: Inappropriate ioctl for device
foo.py                                          100% 1829     1.8KB/s   00:00

誰が私がInappropriate ioctl for device

26
jonderry

~/bashrcに次の行を含めると、まったく同じ問題が発生しました。

stty -ixon

この行の目的は、 bashの逆検索でCtrl-s を使用できるようにすることでした。

このリンクには解決策があります (利用不可)

上記リンクのWebアーカイブバージョン

'stty'はttyに適用されます。これは、対話型ログインセッション用です。 .kshrcは、stdinがttyではないセッションを含むすべてのセッションに対して実行されます。 .profileに移動する以外の解決策は、インタラクティブなシェルであることを条件に実行することです。

相互シェルをチェックする方法はいくつかあります 。以下は、bashの問題を解決します。

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