#概要
会社のwindows、自宅のmacと複数端末から同じEC2へsshアクセスする方法です。
#このようにしたい
・秘密鍵(pemファイル)を共有しない
・EC2に新たなユーザを追加しない(ec2-userのみを使用する)
#キーペアを生成する
2台目からはローカルPCでキーペアを生成し、秘密鍵をローカルPCに、公開鍵をEC2上に配置します。このキーペアを生成するためにはssh-keygen
を使用します。
ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/[username]/.ssh/id_rsa): (enter入力※1)
Enter passphrase (empty for no passphrase): (enter入力※2)
Enter same passphrase again: (enter入力※2)
Your identification has been saved in /Users/[username]/.ssh/id_rsa.
Your public key has been saved in /Users/[username]/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:0xxxxx....xxxxxx [username]@[hostname].local
The key's randomart image is:
+---[RSA 2048]----+
| xxxxxxxxx|
| xxxxxxxxxx|
| xxxxxxxxxxx|
| xxxxxxxxxxx|
| xxxxxxxx |
| xxxxxxx |
| xxxxxxx|
| xxxxxxxx|
| xxxxxxxxx|
+----[SHA256]-----+
上記のようにssh-keygenを入力した後は全てenterで良いと思います。
*1:保存先、ファイル名を指定できますが、生成後に変更で良いかと
*2:秘密鍵にpassphraseまでつけてしまうと使い勝手が悪いかと。秘密鍵は公開しない、漏洩させないということを意識することが大事かと思います
~/.ssh/
配下に以下の2つのキーが生成されます。
id_rsa : 秘密鍵
id_rsa.pub : 公開鍵
秘密鍵は分かりやすい ファイル名.pem に変更しておきます。
公開鍵は後述のようにEC2へ登録します。
#公開鍵をEC2へ登録する
すでにEC2へアクセスできる端末にて、sshでEC2へアクセスし、以下のファイルを開きます(ec2-userでアクセスです)。
vi ~/.ssh/authorized_keys
※viじゃなくても良いです。
authorized_keysにはすでに登録されている公開鍵が記載されています。
1行が1つの公開鍵となります。
ですので、改行して、作成した公開鍵の内容を追記します。
追記するためには、新しい端末で生成した公開鍵をすでにEC2へアクセスできる端末へコピーする必要があります。公開鍵なので、基本的にはどのような渡し方でも良いと思います。
私はslackで公開鍵の内容を自分宛に送り、不要となったらslackのメッセージを削除するというやり方でコピーしました。
後は新しい端末で秘密鍵を使用し、EC2へsshでアクセスします。もちろん、ec2-userでログインできます。
これで複数端末から同一ユーザでEC2へログインできるようになりました。