ssh のマニュアルページには次のように記載されています。
-N Do not execute a remote command. This is useful for just forwarding ports.
「リモートコマンドを実行しないでください」が何を意味するのかわかりません。
誰かが私にこれを説明できますか?
答え1
通常、ssh
プログラムはリモートユーザーのシェルを使用してリモートシステムでコマンドを実行します。たとえば、ssh user@server ls -l /tmp
/ tmpディレクトリの内容を一覧表示しますserver
。このコマンドを省略すると(図を参照)、ssh user@server
ユーザーシェルを使用した対話型ログインセッションが開始されます。
OpenSSHの機能の1つはトンネル生成です。オプションは、トンネリングとも呼ばれる-D
ネットワークポート転送を可能にするさまざまな技術を使用します。デフォルトで設定されたトンネルは、リモートサーバーでコマンドが実行されるたびに存在します。-L
-R
ssh
ssh
しかし、一般的に望むのは、リモートコマンドの実行に興味がないことです。これがこの-N
オプションの目的です。
答え2
通常、ssh
リモートユーザーのログインシェルに設定されているエントリ(たとえば)を実行すると、/bin/bash
リモートシェルが提供されます。-N
何も実行されないため、ssh
接続だけでリモートシェルが必要ない場合に便利です。
たとえば、ポート転送またはトンネルの作成:
ssh -N -L 8080:127.0.0.1:80 user@server
これはポート転送にのみ役に立ちません。
例:-f
これをオプションと一緒に使用し(例:.ssh / configで設定)、再利用可能な接続を作成するために使用できます。ControlMaster
ControlPath
ssh -fN user@server # creates connection in the background that can be reused.