SSH + Bash + Terminal.appを使用すると、奇妙な問題が発生します。 SSHがバックグラウンドで実行されると、シェルは約50%の時間ランダムにキーストロークを失うようです。
たとえば、次のように実行すると:
$ ssh -N my-tunnel &
$ # typing becomes lossy
その後、「asdf」と入力すると、文字「a」と「f」のみが表示されます。これはランダムであり、部分的に入力速度に関連していますが、最高速度で入力すると「f」しか表示されません。
この問題はシェルにのみ影響します。たとえば、を実行すると、ssh -N my-tunnel & cat
文字が期待どおりにcatによってエコーされます。猫が死んだら、鍵は消え、私は再び殻に戻ります。
その他の注意事項:
- 他の端末ウィンドウは影響を受けません。
- sshが終了すると、シェルはすぐに正常に戻ります。
- 使用しても
nohup ssh -N my-tunnel &
何も変わりません
だから:どうしたの?端末を破壊せずにバックグラウンドでSSHを実行する方法はありますか?
答え1
sshが端末からデータを読み取らないように-n
するには、Exceptを使用する必要があります。-N
答え2
これは通常の動作です。ssh
端末に接続している間はバックグラウンドで実行しないでください。不要になった場合(パスワードなど)、端末をバックグラウンドに配置するには、次のオプションを使用するのではなく、この-f
オプションを使用します&
。
ssh -fN my-tunnel