パブリックアクセスさせたくない特定のポートアクセスを行う場合に使うSSHトンネルを、Linuxのサーバー起動時に自動的に掘っておくための設定方法を紹介します。
SSHの秘密鍵、公開鍵の作成
ssh-keygenコマンドで秘密鍵(id_rsa)と公開鍵(id_rsa.pub)を作成します。
$ cd ~
$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/ユーザー名/.ssh/id_rsa): <--鍵の保存先 (エンター)
Enter passphrase (empty for no passphrase): <-- パスフレーズを入力(今回はパスフレーズ無しでエンター)
Enter same passphrase again: <-- もう一度、パスフレーズを入力(今回はパスフレーズ無しでエンター)
Your identification has been saved in id_rsa.
Your public key has been saved in id_rsa.pub.
作成されたid_rsa.pubの中のテキストを接続先の「ユーザフォルダ/.ssh/authorized_keys」内に追記します。
起動時のトンネル堀りを設定
システム起動時に実行されるスクリプト 「/etc/rc.local」にトンネル堀りの実行コマンドを追記します。
$ sudo vi /etc/rc.local
/etc/rc.local
............
............
touch /var/lock/subsys/local
#この下にトンネル堀りのコマンドを追記
/usr/bin/ssh -o ServerAliveInterval=60 -i /home/ec2-user/.ssh/id_rsa -f -N -L 5433:localhost:5432 ec2-user@接続先IPアドレス
動作確認
サーバーをシャットダウン
$ sudo shutdown -r now
トンネルの状態を確認
$ sudo netstat -lanput | grep 5432
tcp 0 0 127.0.0.1:5433 0.0.0.0:* LISTEN 2914/ssh
tcp6 0 0 ::1:5433 :::* LISTEN 2914/ssh
以上で、Linux起動時にSSHトンネルを掘る設定方法の紹介が完了です。おつかれさまでした!!