web-dev-qa-db-ja.com

バックグラウンドのSSHトンネル

Sshトンネル接続が正しく実行されることを期待するプロセスがあり、次のコマンドを使用しています。

ssh -L localhost:3306:127.0.0.1:3306 username@<mysql-machine-ip-address> -N &

私はこれを8か月間正常に実行しました。最近、ホスティングプロバイダーはハードウェアを変更してマシンを更新する必要があり、Ubuntuの新しいカーネルでマシンをアップグレードしました。 4.8.3-x86_64-linode76から4.8.6-x86_64-linode78になりました。

一連のトラブルシューティングの後、コマンドを次のように更新する必要があります。

ssh -L localhost:3306:127.0.0.1:3306 username@<mysql-machine-ip-address> -fN

Sshドキュメントを調査するとき-fパラメータ

コマンド実行の直前にバックグラウンドに移動するようにsshに要求します。これは、sshがパスワードまたはパスフレーズを要求するが、ユーザーがバックグラウンドでそれを望んでいる場合に役立ちます。これは-nを意味します。リモートサイトでX11プログラムを開始するための推奨される方法は、ssh -f Host xtermのようなものです。

「&」のbashコマンドを調べるとき

プロセスをバックグラウンドに配置します(「UNIXオペレーティングシステムの中間的な使用」のマルチタスクを参照)。

これら2つのコマンドには基本的に違いがありますか?

16
develop4fun2011

はいあります。 ssh &は最初からsshをバックグラウンドで実行します。 ssh -fはフォアグラウンドでsshを開始し、パスワードなどのプロンプトを表示できるようにします。その後、要求されたコマンドを実行する直前にsshがバックグラウンドに置かれます。

21
AlexP