【初心者向け】なるべく簡単にAmazon Linux 2にSSH公開鍵認証のユーザを作成する

記事タイトルとURLをコピーする

みなさんこんにちは。技術5課の佐野です。
最近は18年ぶりに刊行された十二国記の新刊を、時間をみつけてはちまちま読んでます。
感想の共有はネタバレしない程度に、いつでもお待ちしております!

さて、みなさんはAWSのEC2でLinuxインスタンスを立てたとき、こんなことはありませんか?

  • 外部の人に一時的に入ってもらうために踏み台サーバを作ったけど、インスタンス作成時に内部用のキーペアで作成してしまった
  • セキュリティが気になるので、内部用のキーペアを外に出したくない
  • かといって、パスワード認証のユーザは作りたくない

そんなときに「SSH公開鍵認証のユーザを作成する」のがいちばんなのですが、Linux初心者だとちょっとハードル高そうですよね。わたしもそう思ってました。
そこでなるべく初心者にやさしくSSH公開鍵認証のユーザを作成する手順を書いてみました!

前提条件

  • 対象OSはAmazon Linux 2とします
  • ec2-userと対応するキーペアでEC2インスタンスにログインできる状態にあることとします
  • PuTTYが作業環境にインストールされている、もしくは使える環境があることとします
  • 作成するユーザ名は「newuser」とします
  • ユーザ名「newuser」にログインするためのキーペアは「newuser.pem」とします(※)

※newuserに設定するキーペア「newuser.pem」は、
 AWSマネージドコンソールで新規にキーペアを作成する想定です。
 AWSマネージドコンソールまたはAWS CLIを利用できない環境では、
 PuTTYgenで秘密鍵と公開鍵を作成できます。詳しくは補足の手順をご覧ください。

参考:Linux インスタンスでのユーザーアカウントの管理

newuserの作成

Amazon Linux 2にec2-userでログインし、newuserユーザを作成します。

[ec2-user ~]$ sudo adduser newuser

認証鍵ディレクトリの作成

ec2-userからnewuserにスイッチユーザして切り替えます。

[ec2-user ~]$ sudo su - newuser
[newuser ~]$

SSHキーファイル用のディレクトリをnewuserのホームディレクトリに作成し、
そのファイルのアクセス許可を 700 (所有者のみ、読み取り、書き込み、削除が可能) に変更します。

[newuser ~]$ mkdir .ssh
[newuser ~]$ chmod 700 .ssh

authorized_keys という名前のファイルを .ssh ディレクトリに作成し、
そのファイルのアクセス許可を 600 (所有者のみ、読み取りおよび書き込みが可能) に変更します。

[newuser ~]$ touch .ssh/authorized_keys
[newuser ~]$ chmod 600 .ssh/authorized_keys

キーペアから公開鍵を取り出す

(1)PuTTYインストール時に一緒に入る、PuTTYgenを起動し、「Load」ボタンよりキーペア「newuser.pem」を読み込みます。

(2)「Key Comment」にキーペアの名前「newuser」を入れておきます。

(3)「Key」欄に公開鍵が表示されるので、これをテキストエディタ等に控えておきます。

newuserに公開鍵を登録する

先ほどの手順2でログアウトしてしまった場合は、もう一度ec2-userログインし、newuserへスイッチユーザします。
.ssh/authorized_keysをお好みのテキストエディタで開きます(ここではviとします)。

[newuser ~]$ vi .ssh/authorized_keys

キーボードiを押して挿入モードにし、手順3で控えた公開鍵を貼り付けます。
その後、キーボードEscを押してコマンドモードに戻し、:wqを入力して保存します。

newuserのログイン確認

いったんEC2インスタンスからログアウトします。

[newuser ~]$ exit
[ec2-user ~]$ exit

ec2-userで入ったEC2インスタンスに、今度はnewuserユーザとキーペア「newuser.pem」でログインし、問題なくログインできることを確認します。

newuserにsudo権限をつける

ec2-userでEC2インスタンスに入りなおし、rootにスイッチユーザします。

[ec2-user ~]$ sudo su -

/etc/sudoers.d/90-cloud-init-usersファイルの中身を確認します。
おそらく、ec2-userの記載のみになっているかと思います。

[root ~]$ cat /etc/sudoers.d/90-cloud-init-users
# Created by cloud-init v. 18.5-2.amzn2 on Tue, 05 Nov 2019 02:42:21 +0000

# User rules for ec2-user
ec2-user ALL=(ALL) NOPASSWD:ALL

# User rules for ec2-user
ec2-user ALL=(ALL) NOPASSWD:ALL

viコマンドを使用し、newuserにも同じ権限をつけるように追記します。
viでの編集方法は、手順4でやった要領と同じです。(保存時のコマンドに:wq!と入力を求められることがあります)

[root ~]$ vi /etc/sudoers.d/90-cloud-init-users
# Created by cloud-init v. 18.5-2.amzn2 on Tue, 05 Nov 2019 02:42:21 +0000

# User rules for ec2-user
ec2-user ALL=(ALL) NOPASSWD:ALL
newuser ALL=(ALL) NOPASSWD:ALL

# User rules for ec2-user
ec2-user ALL=(ALL) NOPASSWD:ALL
newuser ALL=(ALL) NOPASSWD:ALL

編集した内容をcatで開いて確認します。

[root ~]$ cat /etc/sudoers.d/90-cloud-init-users

rootユーザからnewuserにスイッチユーザし、sudoコマンドが発行できるか確認します。
以下の例では、ec2-userと同じくrootユーザにスイッチできるかを確かめています。

[root ~]$ su - newuser
[newuser ~]$ sudo su -

ここまでで、newuserを作成して、ec2-userと同じログイン方法と権限を与えることができました!

[補足]PuTTYgenで秘密鍵と公開鍵のどちらも作成する

(1)PuTTYインストール時に一緒に入る、PuTTYgenを起動し、「Generate」ボタンをクリックします。

(2)「Key」欄にゲージが現れるので、マウスをぐるぐる動かして完了させます。とにかくマウスを動かすことが肝心です!

(3)完了すると以下の画面になるので、「Key Comment」にキーペアの名前「newuser」を入れておきます。

(4)「Key」欄に公開鍵が表示されるので、これをテキストエディタ等に控えておきます。
   もしくは、「Save public key」ボタンでダウンロードしましょう。

(5)「Save private key」ボタンで秘密鍵をダウンロードします。
   PuTTYgenで秘密鍵を作ったときは、「newuser.ppk」などのppkファイルとなります。

おわりに

いかがでしたでしょうか?「初心者でも意外と簡単だな」と思ってもらえると嬉しいです。
それでは、セキュアで楽しいクラウドライフをお過ごしくださいませ。

佐野 史織 (記事一覧)