autossh の活用と SSH 隧道の自動再接続

autossh は、SSH 接続を自動的に再確立するためのツールであり、長時間維持される SSH ポートフォワーディングやトンネルに特に有用です。このツールは、接続が切断された際に自動的に再接続を行うことで、安定した接続環境を提供します。

yum install autossh

基本的な使用方法

autossh -M <監視ポート> -p <SSHポート> -i <認証鍵ファイル> -R <リモートポート>:localhost:<ローカルポート> user@remote_host

引数の説明:

  • -M <監視ポート>:SSH 接続の状態を監視するポートを指定(オプション。0 を設定すると無効化)。
  • -p <SSHポート>:リモートホストの SSH ポート(デフォルトは 22)。
  • -i <認証鍵ファイル>:秘密鍵ファイルを指定。
  • -R または -L:リモート側またはローカル側のポートフォワーディングを定義。
  • user@remote_host:リモートホストのユーザー名とアドレス。
  • 例:逆方向トンネルの構築

ローカルの 8080 ポートをリモートの 8081 ポートにマッピングする場合:bash コピー``` autossh -M 20000 -R 8081:localhost:8080 user@remote.example.com


###  注意点と推奨事項

- **鍵認証の利用**:パスワードによる認証は避けて、SSH 鍵が適切に設定され、`ssh-agent` に追加されていることを確認してください。
- **再試行間隔の調整**:`AUTOSSH_POLL` および `AUTOSSH_GATETIME` 環境変数により再接続の動作を制御できます。
- **バックグラウンド実行**:`nohup` や `systemd` を使用して、起動時に自動的に開始し、常駐させることができます。

### 例:`systemd` によるサービス登録(任意)

`/etc/systemd/system/autossh-tunnel.service` というファイルを作成します:

ini コピー```
[Unit]
Description=AutoSSH tunnel
After=network.target

[Service]
Environment="AUTOSSH_GATETIME=0"
ExecStart=/usr/bin/autossh  -M 0 -N -L 172.32.0.0:10023:10.10.15.3:22 -p 8225 admin@172.25.25.13 -o ServerAliveInterval=30 -o ServerAliveCountMax=3
Restart=always
User=root

[Install]
WantedBy=multi-user.target

その後、サービスを有効化・起動します: ``` sudo systemctl daemon-reexec sudo systemctl daemon-reload sudo systemctl enable autossh-tunnel sudo systemctl start autossh-tunnel


**ファイアウォールで 10022 ポートを許可する必要があります**: ```
sudo firewall-cmd --permanent --add-port=10022/tcp
sudo firewall-cmd --reload

この admin アカウントは 172.25.25.13 上のアカウントである必要があります: ``` ssh -p 10023 admin@172.32.1.2

タグ: autossh SSH ポートフォワーディング systemd ファイアウォール

6月19日 17:54 投稿