「リモートコマンドを実行しない」とはどういう意味ですか?

「リモートコマンドを実行しない」とはどういう意味ですか?

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-Rsshssh

しかし、一般的に望むのは、リモートコマンドの実行に興味がないことです。これがこの-Nオプションの目的です。

答え2

通常、sshリモートユーザーのログインシェルに設定されているエントリ(たとえば)を実行すると、/bin/bashリモートシェルが提供されます。-N何も実行されないため、ssh接続だけでリモートシェルが必要ない場合に便利です。

たとえば、ポート転送またはトンネルの作成:

ssh -N -L 8080:127.0.0.1:80 user@server

これはポート転送にのみ役に立ちません。

例:-fこれをオプションと一緒に使用し(例:.ssh / configで設定)、再利用可能な接続を作成するために使用できます。ControlMasterControlPath

ssh -fN user@server # creates connection in the background that can be reused.

関連情報