web-dev-qa-db-ja.com

autosshを使用して永続的な逆SSHトンネルを取得するにはどうすればよいですか?

(SOでこれを尋ねましたが、ここでそれを取るようにアドバイスされました)

Raspberry Pi 2と私のサーバー(静的IPを持つサーバー)の間に逆SSHトンネルを作成できましたが、正常に動作します。私がサーバーで使用しているユーザーアカウントは「ksproxy」と呼ばれます(実際には「プロキシ」ではありませんが、何でもかまいません)。

今私はautossh(Debian/Raspbianパッケージautosshから)も機能させようとしていますが、成功していません。私は近いかもしれません。

(この質問の実際のIPを37.xxx.yyy.zzzに変更して、サーバーの実際のIPを投稿しないようにしました)

正常に機能するものは次のとおりです:(autosshなし)

Rpiについて:

rspi@antlia:~ $ ssh -N -R 20000:localhost:22 [email protected]

サーバー(静的IPを持つサーバー):

[email protected]:~$ ssh rspi@localhost -t -p 20000
rspi@localhost's password:
rspi@antlia:~ $

したがって、すべてが正常に機能します。パスワードを入力すると、ターミナル/プロンプトが表示されます。

デスクトップから(最初にサーバーを経由して)RaspberryPiにアクセスすることもできます。

ssh -t [email protected] "ssh rspi@localhost -p 20000"
[email protected] password:
rspi@localhost's password:
...
rspi@antlia:~

最初にサーバーのパスワードを要求し、次にPiのパスワードを要求します。すべて正常です。

ここまでは順調ですね。

今私は同じことを試みますが、今回はautosshを使用します:

rspi@antlia:~ $ autossh -M 20000 -N -i /home/rspi/.ssh/id_rsa [email protected]

[email protected]:~$ ssh rspi@localhost -p 20000

これは「機能」しますが、何もせずに停止します。

Sshコマンドの出力を「-vvv」しようとしましたが、何も起こっていないことを示しています。

別のポートを試してみると、失敗します。

[email protected]:~$ ssh rspi@localhost -p 1234
ssh: connect to Host localhost port 1234: Connection refused

正しいポート(20000)を試したが、今回は-tパラメータを使用した場合、同じことです。「機能」しますが、ターミナル/プロンプトが表示されません。

これが-vvv出力です

[email protected]:~$ ssh -vvv rspi@localhost -t -p 20000
OpenSSH_6.7p1 Debian-5+deb8u1, OpenSSL 1.0.1k 8 Jan 2015
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug2: ssh_connect: needpriv 0
debug1: Connecting to localhost [127.0.0.1] port 20000.
debug1: Connection established.
debug1: key_load_public: No such file or directory
debug1: identity file /home/ksproxy/.ssh/id_rsa type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home/ksproxy/.ssh/id_rsa-cert type -1
debug1: key_load_public: No such file or directory
...
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_6.7p1 Debian-5+deb8u1

パスワードを要求しておらず、端末/プロンプトも表示されていません。

ここで何を理解していないか、間違っていますか?

「nonautossh」方式は正常に機能するため、ファイアウォールの問題ではないと思うことに注意してください(ただし、自動の「常時起動」/再接続機能は利用できません)。私は本当にautosshを機能させたいと思っています(いくつかのcrontabが手動SSHトンネルを自動的に再起動するなどの回避策を見つけることができると思いますが、それはおそらくautosshを機能させるよりも脆弱です)。

5
Cedric Martin
$ autossh -M 20000 -N -i /home/rspi/.ssh/id_rsa [email protected]
...
$ ssh rspi@localhost -p 20000

この場合、ssh -Rオプションを使用してリバーストンネルを設定していません。代わりにautossh -Mオプションを指定しています。 autossh -Mパラメータ により、autosshは、autosshが独自の目的で使用するトンネルをそのポートにセットアップします(SSHリンクがまだ機能していることを定期的にテストするため)。これは、ssh-Rパラメーターと同等ではありません。このシナリオでポート20000に接続すると、autosshのプライベート接続テストポートに接続されます。

引き続き、sshの-Rオプションを使用して、必要な逆トンネルを指定する必要があります。 autosshのエコーポート機能を使用する場合は、別のポートで実行する必要があります。

$ autossh -M 20002 -N -R 20000:localhost:22 [email protected]
3
Kenster