リモートシステムでSSHを使用してバックグラウンドでコマンドを送信する方法

リモートシステムでSSHを使用してバックグラウンドでコマンドを送信する方法

ssh次のように&を使用してリモートシステムでポートを開こうとしますnetcat

ssh [email protected] 'netcat -l 7777 &'

しかし、ディスプレイ出力を待ってバックグラウンドに入ることはありません!
私はnohupこれを以前に試しましたが、netcat同じ結果を得ました。

netcatSSHを使用してリモートシステムでバックグラウンドで実行するにはどうすればよいですか?

答え1

以下を使用できます。

ssh -f [email protected] "sh -c 'netcat -l 7777 > /dev/null 2>&1 &'"

確認するこのスレッド

答え2

公式バージョンは、他の回答で述べたように、すべてのシェル魔法なしで完全な接続を背景にする-fswitch toを使用することです。ssh

-f

コマンドが実行される前にSSHにバックグラウンドに入るように要求します。これはsshにパスワードやパスフレーズが必要ですが、ユーザーがそれをバックグラウンドで実行したい場合に便利です。これは -n を意味します。リモートサイトでX11プログラムを起動するための推奨方法は、ssh -f host xtermなどのコマンドを使用することです。

ExitOnForwardFailure 設定オプションが「yes」に設定されている場合、-f で始まるクライアントは、すべてのリモートポート転送がバックグラウンドに配置される前に正常に設定されるのを待ちます。

関連情報