【SSH接続】秘密鍵の認証に失敗したときに読む!

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

こんにちは。SRE1課の古川(と)です。
先日、技術課題をやっているときに「公開鍵の置き場所も、ファイルの中身も正しいはずなのに秘密鍵でログインできない!」となり困ったので、原因対処法をブログに残そうと思います。

前提

EC2インスタンス (Amazon Linux) のOSに kadai-usertest-user を作成し、それぞれのホームディレクトリに公開鍵を置きました。

その後、秘密鍵でログインできるかを確認したところ、test-userのみTera Termで「認証に失敗しました。再試行してください。」とエラーが出ました。

f:id:swx-tomoe-furukawa:20210323140138p:plain

kadai-usertest-userともに、公開鍵が「正しい場所に置かれていること」「ファイルの中身に間違いがないこと」は確認済みの状態です。

鍵ファイルのパーミッション

「ファイルのパーミッションのせいかもしれない。」とのアドバイスをトレーナーにいただき、鍵ファイルが置かれている.sshディレクトリのパーミッションを確認してみるとこんな違いがありました。

kadai-userのパーミッション↓

drwxr-xr-x 2 kadai-user kadai-user  29 Mar 11 01:15 .ssh

test-userのパーミッション↓

drwxrwxr-x 2 test-user test-user  29 Mar  8 06:27 .ssh

test-userの.sshディレクトリのパーミッションが775となっており、グループにも書き込み権限が許可されている状態でした。

調べてみたところ、

鍵ファイルが置かれているディレクトリや鍵ファイルのパーミッションがユルユル(ユーザー以外にも書き込み権限が許可されている状態)だと、セキュリティの観点からログインが拒否されるということが分かりました!

エラーログを見てみる

実際にtest-userログイン失敗時のログを確認してみました!

[root@hogehoge ~]# tail /var/log/secure
Mar 23 04:58:24 hogehoge sshd[4065]: Authentication refused: bad ownership or modes for directory /home/test-user/.ssh

/home/test-user/.sshディレクトリのパーミッションが良くないよと言われてますね。

対処法

以下コマンドでtest-userの.sshディレクトリのパーミッションを700に変更し、ユーザー以外には操作させないようにしましょう。

# chmod 700 /home/test-user/.ssh

以下コマンドを実行し、確認してみます。

# ls -al /home/test-user

パーミッションが正しく変更されています。

drwx------ 2 test-user test-user  29 Mar  8 06:27  .ssh

再度、秘密鍵でログインしてみたところ成功しました!

今回は.sshディレクトリのパーミッションが原因でしたが、それ以外のディレクトリ/ファイルのパーミッションが原因となることもあります。

ログインできない際は以下のディレクトリ/ファイルのパーミッションを確認してください。

  • .sshディレクトリ
  • authorized_keysファイル

参考資料:

aws.amazon.com

kadai-usertest-userでパーミッションが異なった原因

kadai-usertest-userともに同じように作成した(はず)なのに、test-userの.sshディレクトリのみパーミッションがユルユルだった原因は、kadai-usertest-user作成時のユーザーのumaskでした。

同じようにユーザーを作成したつもりでしたが、

  • kadai-userrootユーザーでadduserした。
  • test-userec2-userでadduserした。

という違いがあり、

rootユーザーのumask↓

[root@hogehoge ~]# umask
0022

ec2-userのumask↓

[ec2-user@hogehoge ~]$ umask
0002

これらumaskの設定値を反映していたため、ec2-userで作成したtest-userのみ.sshディレクトリのパーミッションがユルユルになっていました。

おわりに

umaskの値は大事!ということは知っていたものの、正直あまり意識していませんでした。

ディレクトリ/ファイルを作成するときはumaskの値を確認してから作成するという癖をつけたいと思います!

古川智絵 (執筆記事の一覧)

2020年新卒入社 技術課(SRE1課)に所属 好きな食べ物はみそ汁