今回は、オンプレに展開したAmazon Linux2にSSH接続ができるように設定していきます。
Amazon Linuxはデフォルトで公開鍵認証を使用したSSH接続のみ許可しています。
今回の手順は、一時的にパスワード認証を許可し、公開鍵をアップロードして、公開鍵認証に戻す方法ですので、パスワード認証を設定中にパスワードを破られると外部からSSHされる可能性があります。
期待する目標
本手順で期待する目標は以下の通りです。
- パスワード認証を使用してAmazon Linux2にSSH接続ができる
- 公開鍵認証を使用してAmazon Linux2にSSH接続ができる
- Terateremを使用して鍵を作成できる
前提条件
今回、使用する環境は以下の通りとなります。
また、公開鍵を作成するために、Teratermを使用しています。
- CPU : 2vCPU
- MEM : 4GB
- DISK : 60GB
- IP : 192.168.100.177
- Hostname : dev-amazon
Amazon Linux2日本語設定
SSH接続を行う前に、Amazon Linux2の日本語周りの設定を行っていきます。

Amazon Linux2のコンソールより、以下のコマンドを実行し、キーマップ設定・日本語のロケール設定・タイムゾーンの設定を行っていきます。
$ sudo localectl set-keymap jp106
#キーボードレイアウトを日本語106キーボードに変更
$ sudo localectl set-locale LANG=jp_JP.utf8
#言語設定を日本語utf8に設定
$ sudo timedateclt set-timezone Asia/Tokyo
# タイムゾーンを東京に設定
SSH設定変更
Amazon Linux2はデフォルトで公開鍵認証によるSSH接続となっています。
公開鍵などのやり取りにSSH接続はできたほうが良いので、一時的にパスワード認証を許可するように設定を変更します。
なお、この方法は、セキュリティレベルを一時的に低く設定しますので、推奨はしません。
別の方法で鍵交換をしてください。

Amazon Linux2のコンソールより、以下のコマンドを実行しファイルを変更します。
$ sudo vi /etc/ssh/ssh_config
#以下のコメントアウトを外す
<変更前>
#PasswordAuthentication yes
<変更後>
PasswordAuthentication yes
#以下をコメントアウトする
<変更前>
PasswordAuthentication no
<変更後>
#PasswordAuthentication no
設定変更後、[ESC]+[:eq]で保存します。

ssh_configの書き換えを行ったら設定の反映を行うため以下のコマンドを実行し、sshdを再起動します。
$ sudo systemctl restart sshd
#再起動後、ステータスの確認を実施
$sudo systemctl status sshd
sshd再起動後、ステータスが[active]となっていることを確認します。
鍵生成(Teraterm)
一時的にパスワード認証によるSSH接続ができるようになったので、公開鍵認証を行うための鍵を作成していきたいと思います。
今回は、Teratermで鍵生成を行っていきます。

Teratermを起動し、[設定]-[SSH鍵生成]を選択します。

[TTSSH:鍵生成]より、以下の設定を行うい、[生成]を選択します。
- 鍵の種類 : RSA
- ビット数 : 2048
- bcrypt KDF形式 : ■
- ラウンド数 : 16

鍵生成が完了したら、公開鍵と秘密鍵を保存します。
秘密鍵に関しては絶対に流出しないようにしてください。

Teratermより、新しい接続を行いうます。

先ほど鍵を生成しましたが、Amazon Linux2に公開鍵を登録していないため、一時的にパスワード認証でSSH接続を行います。

パスワード認証による接続ができたら、SSH接続の設定を行っていきます。
$ vi .ssh/authorized_keys

公開鍵をメモ帳で開き内容をすべてauthorized_keysに貼り付けます。
ここで設定するのは、公開鍵です。秘密鍵を登録しないでください。
公開鍵の貼り付けが完了したら、保存します。
公開鍵認証によるSSH接続

Teratermを起動し、SSH接続をします。
SSH認証より、以下の設定を行い、SSH接続を行います。
- ユーザ名 : 作成したユーザ名
- RSA/DSA/ECDSA/DE25519鍵を使用する : ●
- 秘密鍵 : Teratermで作成した秘密鍵のパス
公開鍵認証でSSH接続ができたら、公開鍵認証によるSSH接続の設定は完了です。
次回以降はこの方法でSSH接続をします。
パスワード認証の無効化
公開鍵認証によるSSH接続が成功したら、パスワード認証を無効化していきます。

以下のコマンドを使用し、sshd_configを編集します。
$ sudo vi /etc/ssh/sshd_config

エディタより以下の個所を変更します。
#以下をコメントアウトする
<変更前>
PasswordAuthentication yes
<変更後>
#PasswordAuthentication yes
#以下のコメントアウトを外す
<変更前>
#PasswordAuthentication no
<変更後>
PasswordAuthentication no
設定変更後、[ESC]+[:eq]で保存します。

設定が完了したら、以下のコマンドを使用してsshdを再起動します。
再起動後は、ステータスを確認しておきます。
$ sudo systemctl restart sshd
#sshdのステータス確認
$ sudo systemctl status sshd
パスワード認証を無効化した後は、必ずパスワード認証が通らないことを確認しておきます。
以上で、Amazon Linux2に公開鍵認証を使用してSSH接続を行う手順は完了です。
まとめ
前の記事でHyper-VやvCenterにAmazon Linux2を構築しました。
Amazon Linux2はデフォルトで公開鍵認証を使用しているため、一時的にパスワード認証を使用して鍵設定を行った後に公開鍵認証の設定を行いました。
ローカルの環境など安全が保障されている場所では、パスワード認証をしてもよい気はしますが、Amazon Linuxなど外部に公開されることが前提なので、安全面から公開鍵認証の設定は行っておいてもよいと思います。
(接続元の秘密鍵を抜かれたら元も子もないが・・・)
おまけ
本ブログではVMwareやWindows、Linuxのインストール手順等も公開しております。
インフラエンジニアとして有益な記事や無益なコンテンツも作成しておりますので、通勤時間や休憩時間、休日のスキマ時間等に合わせて読んでいただけると幸いです。
また、Youtubeで解説動画も鋭意作成中です。本ブログで記事にしているものも動画にしようと思っておりますので、よろしくお願いいたします。
willserverのnoteも開設したのでフォローお願いします。
コメント