インターネットのどこからでもPIにアクセスするためにautosshを使用してRaspberry PIからVPSへのリモートポート転送はなぜ一度だけ機能するのですか?

インターネットのどこからでもPIにアクセスするためにautosshを使用してRaspberry PIからVPSへのリモートポート転送はなぜ一度だけ機能するのですか?

私はインターネットのどこからでもPIにアクセスできるようにVPSからRaspberry PIへのautosshおよびリモートポート転送を使用していますが、一度だけ動作します。

私のローカルネットワークにRaspberry PI 2があり(Raspbian、問題を再現できるかどうかを新しくインストールする)、リモートポート転送(VPSからPIポートへの特定のポート転送)を使用してインターネットからアクセスしようとしています。これにより、VPSからlocalhostへのSSH経由でPIにアクセスできます。これは可能です。しかし、私は場所を空ける予定なので、私は数週間PIに物理的またはローカルにアクセスできず、crontabを使用して永続的なautossh接続を自動化したいと思います(起動中にautosshリモートポート転送コマンドを実行します)。電源を切ってもPIに接続できます.) autosshを使用すると手動で動作しますが、crontabを使用すると問題が発生します.以下は私が使ったステップです。

crontabの前にautosshコマンドを使用して動作していることを確認してください(コマンドはPIで実行され、VPSへのリモートポート転送が含まれるため、VPSのポート7997はPIのポート22に転送されます)。

0) /usr/bin/autossh -4 -M 0 -N -o "ServerAliveInterval 30" -o "ServerAliveCountMax 3" -i path/to/private/key -R 7997:localhost:22 username@ip-address-of-vps

(今はVPSからPIに接続しています)

1) ssh pi@localhost -p 7997 

The authenticity of host 'x.x.x.x' can't be established.
ECDSA key fingerprint is x
Are you sure you want to continue connecting (yes/no)? yesa
Please type 'yes' or 'no': yes)

実際、この方法は機能します。手動で実行すると(手順0と1に示すように)、正常に接続されます。

ただし、再起動後もSSH接続を維持しようとすると問題が発生します。

PIで「crontab -e」と入力し、以下を挿入します。

2) @reboot sleep 30; /usr/bin/autossh -4 -M 0 -N -o "ServerAliveInterval 30" -o "ServerAliveCountMax 3" -i path/to/private/key -R 7997:localhost:22 username@ip-address-of-vps

3) sudo reboot

1~2分ほど待ってからVPSから入ります。

4) ssh pi@localhost -p 7997

PIに正常に接続したら(PIから)入力します。

5) sudo reboot (again)

6) ssh pi@localhost -p 7997 (again from the VPS, after waiting 1-2 minutes)

今回はエラーが発生します。

username@vps:~$ ssh pi@localhost -p 7997
ssh_exchange_identification: read: Connection reset by peer
username@vps:~$ ssh pi@localhost -p 7997
ssh: connect to host localhost port 7997: Connection refused
username@vps:~$ ssh pi@localhost -p 7997
ssh: connect to host localhost port 7997: Connection refused

追加の観察事項:この時点で、PIにローカルで(ローカルネットワーク上で)sshを実行し、手動でautosshを実行し(ステップ0を参照)、VPS内でPIとしてsshを実行すると(ステップ1を参照)、接続されます。後でPIを再起動すると(VPSで)再接続されますが、後で再起動すると「Connection Reset by Peer」出力が表示され、次に「Connection Rejected」出力が表示されます。これを無限に繰り返し、autosshを手動で実行してからVPSから接続すると機能し、再起動すると機能し、再起動するとピアによって接続がリセットされます。

追加の観察2:私のVPSの/var/log/auth関連出力は次のとおりです。

Oct 30 01:27:20 vps sshd[1217]: Accepted publickey for username from x.x.x.x port 43008 ssh2: RSA SHA256:xxxxetc 
Oct 30 01:27:20 vps sshd[1217]: pam_unix(sshd:session): session opened for user username by (uid=0) 
Oct 30 01:27:20 vps sshd[1223]: error: bind: Address already in use 
Oct 30 01:27:20 vps sshd[1223]: error: channel_setup_fwd_listener_tcpip: cannot listen to port: 7997

この問題を解決するにはどうすればよいですか?

修正する:

うまくいくのは/etc/ssh/sshd_configを編集することです。サーバー側から

ClientAliveInterval 60
ClientAliveCountMax 1

正確な値は、目的の動作方法によって異なります。サーバーとクライアントを再起動します。また、この前に(インストールされている場合)failure2banをアンインストールし、クライアントコンピュータを再起動できることを確認してから再インストールすることを検討することもできます。これは、クライアントコンピュータのIPが禁止されている可能性があるためです。試してみる

ベストアンサー1

修正する:

うまくいくのは/etc/ssh/sshd_configを編集することです。サーバー側から

ClientAliveInterval 60
ClientAliveCountMax 1

正確な値は、目的の動作方法によって異なります。サーバーとクライアントを再起動します。また、この前に(インストールされている場合)failure2banをアンインストールし、クライアントコンピュータを再起動できることを確認してから再インストールすることを検討することもできます。これは、クライアントコンピュータのIPが禁止されている可能性があるためです。試してみる

おすすめ記事