SSH:sshサーバー上のシェルなしのトンネル


63

2つのホスト間にトンネルを設定する必要があります。

このために私sshはこのように使用します:

ssh -L MY_LOCAL_PORT:FOREIGN_ADDRESS:FOREIGN_PORT MYUSER@SSH_SERVER

その後、SSH_SERVERにログインします。

この機能を回避するにはどうすればよいですか?!トンネルを設定するだけです。SSH_SERVERにログインする必要はありません...

-Nオプションを試しましたが、シェルが忙しくなりました。


SSH -N -L xx:xx:xx user @ server&<-以前に試してみましたか?
ローレンス

ねえ、あなたは正しい。別のホストで試しましたが、-Nオプションが機能します。そのため、問題は私のsshクライアントにあることがわかりました(理由はわかりませんが、理由を調べます)。どうもありがとう!
バウミャオ

1
man ssh:方法を示しssh -f -L 1234:localhost:6667 server.example.com sleep 10 && irc -c '#users' -p 1234 pinky 127.0.0.1 -fオプションの背景のsshとリモートコマンド``スリープ10「」がトンネル化するサービスを開始する(例では、10秒)の時間を許可するように指定されています。指定した時間内に接続が確立されない場合、sshは終了します。`` `
ライオネッロ

回答:


71

他の投稿で述べたように、リモートホストでプロンプトを表示したくない場合は-N、SSH のオプションを使用する必要があります。ただし、これにより、プロンプトが表示されずにシェルが実行され、シェルがビジー状態になります。

次の&記号を使用して、SSH'ingをバックグラウンドタスクとして配置するだけです。

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をお楽しみください。


17
ioリダイレクトの-f代わりにsshオプションを使用することもできます&
tkrennwa

49

-f -N あなたが探しているものです:

ssh -f -N -L MY_LOCAL_PORT:FOREIGN_ADDRESS:FOREIGN_PORT MYUSER@SSH_SERVER

3
トンネルが設定されたら、この方法でどのように閉じますか?
magnetik

@magnetikでプロセスを検索psし、killそれ
neu242

13
@magnetikと@ neu242は、「マスターソケット」を使用する方が良いssh -N -f -M -S /tmp/file-sock -L port:server:port_to user@...ので、後で接続を終了ssh -S /tmp/file -o exit user@....(または終了)できます。そのように、psする必要はありません。〜/ .ssh / configにそのファイルを自動的に作成するように指示できます。
Metal3d

1
私は、「制御ソケット」ではなく「マスター・ソケット」を意味する
Metal3d

8
それはあるべきssh -S /tmp/file-sock -O exitではない、-o en.wikibooks.org/wiki/OpenSSH/Cookbook/...
fetsh
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.