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