AWS EC2 にて SSH 接続しようとしたら Permission denied (publickey,gssapi-keyex,gssapi-with-mic). エラーが出た時の対応

AWS EC2 にて作業ユーザーを増やして SSH 接続しようとしたら、

$ ssh test@xx.xx.xx.xx
Permission denied (publickey,gssapi-keyex,gssapi-with-mic).

というエラーが出た。
他のユーザーでは証明書と鍵を使ってログインしてたので、
追加するユーザーも同じく対応した。

AWS コンソール側

pem ファイルは使いまわせるので、
既にお使いの EC2 に SSH 接続するために必要な pem ファイルを持っていたらスキップしてもいいと思う。

pem ファイル(デジタル証明書)を DL する

  • EC2 → キーペア → 「キーペアを作成」クリック
    • 名前 - 適当
    • キーペアのタイプ - RSA
    • プライベートキーファイル形式 - .pem
    • 「キーペアを作成」クリック
      • pem ファイルが DL される

自分のパソコン側

DL した pem ファイルを使って公開鍵を作成する

# DL した pem ファイルを .ssh に移動する
$ mv /path/to/downloads/xxxx.pem .ssh
$ cd .ssh

# 600 じゃなければ変更
$ chmod 600 xxxx.pem

# DL した pem ファイルを指定
# -y OpenSSH形式の秘密鍵ファイルを読み出し、OpenSSH形式の公開鍵を標準出力に出力する。だそう
# -f ファイルを指定する。だそう
$ ssh-keygen -y -f xxxx.pem

# 後で使うのでコピーする
ssh-rsa AAAt+XEla6a3NzaC1ycAAVORFAINOEINDAOEIRNFAOejhaA
EOABNAWOEINAoaaVR8rWcjkNPwW7+2ytrSX2S3efaurhaiua-erakUg
VNi1BSxpAmOyWzAt+XEla6a3NzaC1ycAAVORFAINOEINDAOEIRNFAOe
jhaAEOABNAWOEINAoaaVR8rWcjkNPwW7+2ytrSX2S3efaurhaiua-er
akUgVNi1BSxpAmOyWzAt+XEla6a3NzaC1ycAAVORFAINOEINDAOEIRN
FAOejhaAEOABNAWOEINAoaaVR8rWcjkNPwW7+2ytrSX2S3efaurhaiu

.ssh/config

下記のような形でログインしたい時は .ssh/config を扱う。
下記記事参考。

$ ssh sample.test

AWS EC2 側

ユーザーを追加する

$ sudo useradd username

パスワードを変更する

$ sudo passwd username

ユーザーを切り替える

$ su - username

.ssh/authorized_keys 作成

# なかったら作る
# -m パーミッション指定
$ mkdir -m 700 .ssh
$ cd .ssh
$ vi authorized_keys

# 先ほどコピーした公開鍵をペーストする
ssh-rsa AAAt+XEla6a3NzaC1ycAAVORFAINOEINDAOEIRNFAOejhaA
EOABNAWOEINAoaaVR8rWcjkNPwW7+2ytrSX2S3efaurhaiua-erakUg
VNi1BSxpAmOyWzAt+XEla6a3NzaC1ycAAVORFAINOEINDAOEIRNFAOe
jhaAEOABNAWOEINAoaaVR8rWcjkNPwW7+2ytrSX2S3efaurhaiua-er
akUgVNi1BSxpAmOyWzAt+XEla6a3NzaC1ycAAVORFAINOEINDAOEIRN
FAOejhaAEOABNAWOEINAoaaVR8rWcjkNPwW7+2ytrSX2S3efaurhaiu

# 600 でなければ変更
$ chmod 600 authorized_keys

確認その1

$ ssh sample.test

確認その2

AWS コンソールにて、
「EC2」 → 「インスタンス」 → ssh 接続したいインスタンスをチェック → 「接続(実行中のインスタンスのみ選択可)」クリック → 「SSH クライアント」→ 「ssh -i "xxxx.pem" xxxx@.....」をコピーする。

# 今回 pem ファイルは .ssh にあるので .ssh に移動
$ cd .ssh
# AWS コンソールにてコピーしたものを貼り付け
$ ssh -i "xxxx.pem" user@ec2-xx-xxx-xxx-xxx.xx-xxx-1.compute.amazonaws.com