2つのホスト間にトンネルを設定する必要があります。
このため、私はssh
を次のように使用します:
ssh -L MY_LOCAL_PORT:FOREIGN_ADDRESS:FOREIGN_PORT MYUSER@SSH_SERVER
その後、SSH_SERVERにログインします。
この機能を回避するにはどうすればよいですか?トンネルを設置するだけです。 SSH_SERVERにログインする必要はありません...
-Nオプションを試しましたが、シェルがビジー状態のままでした。
他の投稿で述べたように、リモートホストでプロンプトを表示したくない場合は、SSHの-N
オプションを使用する必要があります。しかし、これはプロンプトなしでSSHを実行し続け、シェルをビジー状態にします。
&
記号を使用して、SSHをバックグラウンドタスクとして配置するだけです。
ssh -N -L 8080:ww.xx.yy.zz:80 user@server &
これにより、バックグラウンドでSSHトンネリングが起動します。ただし、特に非リスニングポートに接続しようとすると、メッセージが表示される場合があります(サーバーのApacheが起動されていない場合)。他のことをしているときにこれらのメッセージがシェルで生成されるのを防ぐには、STDOUT/STDERRを大きなvoidにリダイレクトします。
ssh -N -L 8080:ww.xx.yy.zz:80 user@server >/dev/null 2>&1 &
SSHを楽しんでください。
-f -N
はあなたが探しているものです:
ssh -f -N -L MY_LOCAL_PORT:FOREIGN_ADDRESS:FOREIGN_PORT MYUSER@SSH_SERVER
ssh
manページ から:
-fコマンド実行の直前にバックグラウンドに移動するようにsshに要求します。これは、sshがパスワードまたはパスフレーズを要求するが、ユーザーがバックグラウンドでそれを望んでいる場合に役立ちます。これは-nを意味します。
-Nリモートコマンドを実行しません。これは、ポートを転送するだけの場合に便利です(プロトコルバージョン2のみ)。
-nstdinを
/dev/null
からリダイレクトします(実際には、stdinからの読み取りを防ぎます)。これは、ssh
がバックグラウンドで実行されている場合に使用する必要があります。