🔒

TeraTermからEC2へ踏み台EC2越しにSSH転送でアクセスする

2024/02/08に公開

はじめに

  • TeraTermでEC2へ踏み台EC2越しにSSH転送でアクセスするための手順です。
  • セッションマネージャーやインスタントコネクトが利用できる場合は、そちらを利用したほうがよりセキュアで望ましいです。

構成図

Alt text

  • 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

TeraTermのインストール、初期設定

下記リンク先にて、TeraTerm-5.1.exeもしくはTeraTerm-5.1.zipをダウンロードしてインストールを行う。

https://github.com/TeraTermProject/TeraTerm/releases

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を日本語化できる。
Alt text

また、「設定」→「SSH認証」の順に選択すると、TTSSH:認証設定のダイアログが表示される。
デフォルトで入力されるユーザ名や認証方式の設定を実施できる。
ec2-user以外のユーザ名でログインする可能性がある場合は、「デフォルトユーザ名を使用」ではなく「入力しない」にチェックを入れておく。
「ログイン前にサーバで有効な認証方式を確認する(SSH2)」にチェックをいれ「OK」を選択することで、接続前に毎回認証方式の確認を実施できる。
Alt text

変更した設定については、「設定」→「設定の保存」の順に選択し、保存ダイアログが表示されたらそのまま「保存」を選択することで次回起動時に同様の設定で起動することができる。

セキュリティグループを設定する

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時に使用する任意のポート番号

Alt text

セキュリティ警告のダイアログが出たら、「このホストをknown hostsリストに追加する」にチェックを入れ「続行」を選択する。

下記の設定を入力し、「OK」を選択する。

  • ユーザ名: ec2-user
  • パスフレーズ: 空欄
  • RSA/DSA/ECDSA/ED25519鍵を使う: キーペア作成時にダウンロードしたプライベートキーファイルを選択する

Alt text

EC2(踏み台)へのSSH接続に成功する。

Alt text

TeraTermでEC2(接続先)へのポート転送設定を行う

TeraTermのツールバーから「設定」→「SSH転送」の順に選択し、「追加」を選択する。

下記の設定を入力し、「OK」を選択する。

  • ローカルのポート: ポート転送に使用する任意のポート番号(今回は10022)
  • リモート側ホスト: EC2(接続先)のプライベートIPアドレス
  • ポート: 22

Alt text

SSHポート転送ダイアログにて、ポート転送の設定が追加されていることを確認したら、「OK」を選択する。

Alt text

TeraTermでEC2(接続先)へSSH接続する

現在起動しているTeraTermアプリをそのままの状態にして、新しくTeraTermアプリを起動する。

新しい接続ダイアログにて下記内容を入力し、「OK」を選択する。
ホスト: localhost
TCPポート: ポート転送に使用する任意のポート番号(今回は10022)

Alt text

セキュリティ警告のダイアログが出たら、「このホストをknown hostsリストに追加する」にチェックを入れ「続行」を選択する。

下記の設定を入力し、「OK」を選択する。

  • ユーザ名: EC2(接続先)のユーザ名
  • パスフレーズ: EC2(接続先)のパスワード
  • RSA/DSA/ECDSA/ED25519鍵を使う: EC2(接続先)のプライベートキーファイルを選択する

Alt text

EC2(接続先)へのSSH接続に成功する。

Alt text

参考にしたWebサイト

https://yuy-83.hatenablog.com/entry/2021/06/28/035423

Discussion