本記事では、WindowsからAWSのEC2インスタンスへのSSH接続をする方法について学習をしていきます。インフラを扱えるWebエンジニアにとって必須となる設定スキルになります。
事前準備
Git Bashを使って解説をしていきますので、インストールと設定がまだの方は以下の記事の学習を先にしておいてください。

また、EC2インスタンスとドメイン名の紐づけが行われていることと、キーペアの.pemファイルが作成済みであることを前提としています。以下の「EC2インスタンスの作成手順」記事を参考に設定を済ませておいてください。

OpenSSHとは
Windowsには通常OpenSSHというサーバアプリがデフォルトでインストールされています。OpenSSHとは外部サーバ(リモートサーバ)に安全にアクセスしたりファイル転送するためのプログラム群のことを指します。SSHクライアント機能でWindowsから外部サーバへ接続することができたり、SFTP機能ではセキュアなFTPプロトコルを使ってファイル転送もできます。また、SSHキーの作成機能もあります。
sshコマンドでEC2インスタンスにSSH接続する
VSCode内でGit Bashのターミナルを開いてください。そして、以下のコマンドを入力して実際にEC2インスタンスに接続してみましょう。
Git BashはWindowsのパスフォーマットもLinuxのパスフォーマットとして解釈してくれるので以下どちらのフォーマットを使用しても同じようにインスタンスに接続できます。
【Windowsパスフォーマット】
ssh -i "C:\Users\{ユーザ名}\.ssh\{EC2インスタンス作成時に生成したキーペアファイル名}.pem" ec2-user@example.com
【Linuxパスフォーマット】
ssh -i "/c/Users/{ユーザ名}/.ssh/{EC2インスタンス作成時に生成したキーペアファイル名}.pem" ec2-user@example.com
設定ファイルを利用して作業を効率化
上記の方法では毎回 .pem ファイルとインスタンスのユーザ名を指定しないといけないので面倒ですよね。これらを省略する方法を解説します。
WindowsのOpenSSHには以下の場所に設定ファイルがあります。
C:\Users\{ユーザ名}\.ssh\config
設定ファイルを変更する場合は必ずバックアップを取りましょう。
それぞれのサーバごとに以下のブロックを追記してください。
Host alias-name
HostName www.mydomain.com
User ec2-user
IdentityFile C:\Users\{ユーザ名}\.ssh\{EC2インスタンス作成時に生成したキーペアファイル名}.pem
ServerAliveInterval 60
ServerAliveCountMax 180
Host にはssh コマンドで使用するエイリアス(別名)の指定するので、ここでは必ずしも実際のドメイン名を指定する必要はありません。そして、HostName には実際のドメイン名やIPを指定します。ServerAlive* の2項目ではSSH接続をどれくらい長い時間保つかを指定しています。Git Bashのターミナルから何も操作が行われない場合、60秒ごと、つまり1分ごとに接続確認をしてそれを180回(つまり180分=3時間)繰り返したらインスタンスとのSSHの接続を切断するという意味になります。
それでは再度 ssh 接続を試してみましょう。
ssh alia-sname
大分簡略化されましたよね。新しくインスタンス作成するごとに、このconfigファイルへ追加していきましょう。
まとめ
今回の記事ではSSH接続について学習しました。通常WindowsにはOpenSSHがインストールされていて、安全にリモートサーバへ接続したりファイル転送ができる機能がありましたね。そしてsshコマンドを使用して実際にEC2インスタンスに接続してみました。コマンド作業の効率化のためにSSHのconfigファイルの設定方法についても学びました。今回に限らず、変更する設定ファイルは必ずバックアップを和ずれずに取ってから作業するように心がけましょう。
次回は「FTPクライアント|FileZillaのインストールとSFTPの設定」を学習します。ここではSFTP接続についても触れていきます。