ec2-userでログインはできる、でも新規ユーザを作成後(ここではappという名前のユーザーを作ったこととする)、そのユーザでssh接続を試みると、、、
permission denied (publickey).
WTF ...
* 公開鍵も適切に設置されている
* ユーザー名やホスト名が間違っているわけではない(IPアドレスも正しい)
* アクセス権限も問題なし
* セキュリティグループも問題ない
原因がわからず、エラーログを追ってググっても権限関係の解決方法がほとんどで大分ハメられたので、誰か同じように悩まれてる方がいたらと思い、解決方法をシェアしたいと思います。
# ちなみにssh接続のログの出し方
# -vvv をつける
$ ssh -i "~/.ssh/id_rsa" app@88.90.10.10 -vvv
# ちなみにIPアドレスのこの数字は "ハヤクイレテ" って読める
appユーザーにパスワードを設定
(1)まずec2-userでとりあえずEC2に入り、管理者権限に切り替える
(2)パスワードを設定
# パスワードの状態を確認
$ passwd -S app
# こんな感じの出力結果になると思われ
app LK 2019-06-26 0 99999 7 -1
# LK => パスワードがロック状態という意味
# appユーザのパスワードのロックを解除
# -uがロック解除 -fが強制的に というオプション
# -fがないと"危険な操作"として弾かれる
$ passwd -u -f app
# もう一度パスワードの状態を確認
$ passwd -S app
# こんな感じの出力結果になると思われ
app PS 2019-06-26 0 99999 7 -1
# LKからPSとなっていることを確認
# パスワードを設定
$ passwd app
# Enter New Password:
# Confirm New Password:
(EC2)sshd_config 以下の通りとなるようコメントアウトまたは追記
# /etc/ssh/sshd_config
RSAAuthentication yes
PubkeyAuthentication yes
PasswordAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
* sshd再読み込み
$ sudo service sshd restart
これでappユーザで再びssh接続を試みてみてください。
ssh接続時にパスワードの入力が求められますので、そのときは↑で設定したパスワードを入力。
参考にした記事
注意
今のところ二人同じ問題につまづいた方にこれを勧めたところ解決しました。
しかしながら、当方インフラが全然でなぜこのようなエラーとなるのか、なぜパスワードを設定+sshd_configの書き換えで解決するのか根拠を示せません。
どなたかこの問題について違うアプローチ方法または知見を共有していただければ幸いです。