【Linux】「Permissions 0644 for ‘xxxxx’ are too open.」と表示された場合の対処方法(秘密鍵のアクセス権限を変更する)

Linux OSに公開鍵認証方式でSSHログインを試みた際に以下のようなエラーメッセージが表示されました。(’xxxxx’は秘密鍵のパス情報、’yyy@zz.zzz.zzz.zzz’はLinux OSのユーザ名とIPアドレスです)

$ ssh -i xxxxx yyy@zz.zzz.zzz.zzz
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@      WARNING: UNPROTECTED PRIVATE KEY FILE!       @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0644 for ‘xxxxx’ are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
Load key “xxxxx”: bad permissions
yyy@zz.zzz.zzz.zzz: Permission denied (publickey,gssapi-keyex,gssapi-with-mic).

メッセージを読むと、秘密鍵のアクセス権限’0644’がオープン過ぎるとのこと。そのため、秘密鍵のアクセス権限を適切に変更したいと思います。

目次

秘密鍵のアクセス権限’0644’とエラーの原因について

秘密鍵’xxxxx’のアクセス権限を「ls」コマンドで確認すると以下のように表示されました。

$ ls -l xxxxx
-rw-r–r–@ 1 <ユーザ名> staff 2498 4 22 17:02 xxxxx

所有者は読み出し(r:4)と書き込み(w:2)が可能で、グループとその他のユーザは読み出し(r:4)が可能と分かります。今回エラーメッセージが表示されたのは、グループとその他のユーザに読み出しの権限が与えられていたことが原因です。

秘密鍵のアクセス権限を変更する

ファイルのアクセス権限は「chmod」コマンドで変更します。

コマンドの実行方法はいくつかありますが、1つはアクセス権限を数字で指定する方法です。以下の例では、所有者に読み出しと書き込みの権限(r+w = 6)を付与し、グループとその他のユーザには権限を付与していません(= 0)。

または、アクセス権限をアルファベットで指定することもできます。以下の例では、グループ(g)とその他のユーザ(o)から読み出し権限(r)を削除(-)しています。

これで無事にLinux OSにSSHログインできるようになりました。

この記事を書いた人

目次