TeraTermからEC2へ踏み台EC2越しにSSH転送でアクセスする
はじめに
- TeraTermでEC2へ踏み台EC2越しにSSH転送でアクセスするための手順です。
- セッションマネージャーやインスタントコネクトが利用できる場合は、そちらを利用したほうがよりセキュアで望ましいです。
構成図
- EC2(踏み台)へのSSH接続は、セキュリティグループで自分のPCのグローバルIPと任意のポート番号を許可する。
- インターネットからPort 22宛ての接続許可はセキュリティ上危険なため非推奨。
- 特定Port以外を経由する外部通信が許可されていないネットワークからSSH接続する場合にも使える。
- SSHクライアントはTeraTerm 5.1を利用する。
- EC2(踏み台)はAmazon Linux 2023を使用する。
構築手順
事前準備
- 踏み台を立てるVPC、サブネットはすでに作成済みとする。
- 接続先EC2、接続先EC2のセキュリティグループは作成済みで、プライベートキーペアファイルをローカルに保管しているものとする。
- 接続先のEC2でsshdが起動していない場合は起動済みであるものとする。
EC2起動時にデフォルトではsshdが起動していない場合がある。
その場合はEC2起動時ユーザーデータに下記を記載することでsshdの自動起動設定と起動ができる。
#!/bin/bash
systemctl enable sshd
systemctl start sshd
- 自分がアクセスする際の送信元グローバルIPを調べて控えておく。
https://www.cman.jp/network/support/go_access.cgi
TeraTermのインストール、初期設定
下記リンク先にて、TeraTerm-5.1.exeもしくはTeraTerm-5.1.zipをダウンロードしてインストールを行う。
Amazon Linux 2023はRSA/SHA1によるSSH接続がデフォルトで無効化されているため、RSA/SHA2をサポートするTeraTerm 5以降を使用する必要がある。
なお、Amazon Linux 2はTeraTerm 4以下のバージョンでもSSH接続できる。
TeraTermのインストール後、ツールバーにて「Setup」→「General」の順に選択し、「Langage:UI」で「Japanese.lng」を選択して「OK」を選択するとUIを日本語化できる。
また、「設定」→「SSH認証」の順に選択すると、TTSSH:認証設定のダイアログが表示される。
デフォルトで入力されるユーザ名や認証方式の設定を実施できる。
ec2-user以外のユーザ名でログインする可能性がある場合は、「デフォルトユーザ名を使用」ではなく「入力しない」にチェックを入れておく。
「ログイン前にサーバで有効な認証方式を確認する(SSH2)」にチェックをいれ「OK」を選択することで、接続前に毎回認証方式の確認を実施できる。
変更した設定については、「設定」→「設定の保存」の順に選択し、保存ダイアログが表示されたらそのまま「保存」を選択することで次回起動時に同様の設定で起動することができる。
セキュリティグループを設定する
EC2(踏み台)のセキュリティグループを作成し、下記のインバウンドルールを設定する。
アウトバウンドルールはデフォルトのままでよい。
インバウンドルール
項目名 | 内容 |
---|---|
タイプ | カスタムTCP |
ポート範囲 | 踏み台へのSSH時に使用する任意のポート番号 |
ソースタイプ | カスタム |
ソース | 自分がアクセスする際の送信元グローバルIP |
EC2(接続先)のセキュリティグループを編集し、下記のインバウンドルールを追加する。
インバウンドルール
項目名 | 内容 |
---|---|
タイプ | SSH |
ソースタイプ | カスタム |
ソース | EC2(踏み台)のセキュリティグループID |
EC2(踏み台)を作成する
今回はAmazon Linux2023を使用する。
下記内容で設定を行う。
-
インスタンスタイプ: t2.micro
-
キーペアログイン:
- 新しいキーペアを作成
- キーペアのタイプ: RSA
- プライベートキーファイル形式: .pem
※キーペア作成後、プライベートキーファイルがローカルに保存される。SSH接続時に使用するため保管する。
-
VPC: 作成済みのVPCを選択
-
サブネット: 作成済みのパブリックサブネットを選択
-
セキュリティグループ: 作成済みのEC2(踏み台)のセキュリティグループを選択
-
ストレージを設定: 8Gib gp3
-
高度な詳細:
- ユーザデータ:
#!/bin/bash sed -i.old -e 's/#Port 22/Port XXX/g' /etc/ssh/sshd_config systemctl restart sshd
※SSH接続のListenポート番号を22から任意のポート番号に変更する
※XXXには踏み台へのSSH時に使用する任意のポート番号を入力する
TeraTermでEC2(踏み台)へSSH接続する
TeraTermのツールバーから「ファイル」→「新しい接続」の順に選択する。
ダイアログにて下記内容を入力し、「OK」を選択する。
ホスト: EC2(踏み台)のパブリックIPアドレス
TCPポート: EC2(踏み台)へのSSH時に使用する任意のポート番号
セキュリティ警告のダイアログが出たら、「このホストをknown hostsリストに追加する」にチェックを入れ「続行」を選択する。
下記の設定を入力し、「OK」を選択する。
- ユーザ名: ec2-user
- パスフレーズ: 空欄
- RSA/DSA/ECDSA/ED25519鍵を使う: キーペア作成時にダウンロードしたプライベートキーファイルを選択する
EC2(踏み台)へのSSH接続に成功する。
TeraTermでEC2(接続先)へのポート転送設定を行う
TeraTermのツールバーから「設定」→「SSH転送」の順に選択し、「追加」を選択する。
下記の設定を入力し、「OK」を選択する。
- ローカルのポート: ポート転送に使用する任意のポート番号(今回は10022)
- リモート側ホスト: EC2(接続先)のプライベートIPアドレス
- ポート: 22
SSHポート転送ダイアログにて、ポート転送の設定が追加されていることを確認したら、「OK」を選択する。
TeraTermでEC2(接続先)へSSH接続する
現在起動しているTeraTermアプリをそのままの状態にして、新しくTeraTermアプリを起動する。
新しい接続ダイアログにて下記内容を入力し、「OK」を選択する。
ホスト: localhost
TCPポート: ポート転送に使用する任意のポート番号(今回は10022)
セキュリティ警告のダイアログが出たら、「このホストをknown hostsリストに追加する」にチェックを入れ「続行」を選択する。
下記の設定を入力し、「OK」を選択する。
- ユーザ名: EC2(接続先)のユーザ名
- パスフレーズ: EC2(接続先)のパスワード
- RSA/DSA/ECDSA/ED25519鍵を使う: EC2(接続先)のプライベートキーファイルを選択する
EC2(接続先)へのSSH接続に成功する。
参考にしたWebサイト
Discussion