生成された鍵の確認方法
$ ls -l <生成された鍵のパス>
$ less <生成された鍵のパス>
※SSH 鍵は、デフォルトでは各ユーザーの ~/.ssh ディレクトリに置かれています。
秘密鍵のパーミッション
- 秘密鍵ファイルのアクセス権を示す設定
- 秘密鍵ファイルは他人によるアクセスを制限するために、パーミッションを設定する必要がある
chmod 600 が推奨される理由は、秘密鍵のセキュリティを守るための最適なアクセス制御を提供するためです。これを理解するために、UNIX/Linux のファイルパーミッションを簡単に説明します。
パーミッション
基本的な仕組み
- ①誰に対して、アクセス権限を付与するのか②どのようなアクセス権限を付与するのか?を設定する。(9個の権限設定がある)
誰に対してのアクセス権限を設定するのか?
①Owner:自分
②グループメンバー:同じサーバーを利用するユーザー
③その他の人:第三者
与えることのできるアクセス権限
- 読み取り権限:ファイル、もしくはディレクトリを読み取りができる
- 書き込み権限:ファイル、もしくはディレクトリに書き込める
- 実行権限:ファイル、もしくはディレクトリを実行できる
ファイルパーミッションの仕組み
UNIX/Linux システムでは、ファイルに対して次のようなパーミッションを設定できる。
- 読み取り(r): ファイルを読むことができる
- 数字:4
- 書き込み(w): ファイルを変更することができる
- 数字:2
- 実行(x): ファイルを実行することができる
- 数字:1
- 何もできない(-):何もできない
- 数字:0
これらのパーミッションは、所有者(ユーザー)、グループ、その他のユーザーの3つのカテゴリに対して設定できます。
9個の権限設定方法
- パーミッションは、3つの立場ごとに、3つの権限を組み合わせることで設定を行う。(権限設定を行うのは次の9個)
オーナー権限
1.「オーナー(Owner)」の「読み取り権限」
2.「オーナー(Owner)」の「書き込み権限」
3.「オーナー(Owner)」の「実行権限」
グループメンバー権限
4.「グループメンバー(Group)」の「読み取り権限」
5.「グループメンバー(Group)」の「書き込み権限」
6.「グループメンバー(Group)」の「実行権限」
Other権限
7.「その他の人(Other)」の「読み取り権限」
8.「その他の人(Other)」の「書き込み権限」
9.「その他の人(Other)」の「実行権限」
この9個の権限を組み合わせて、パーミッション設定を行っていきます。
具体的な権限設定方法
- 644(rw-r-r-)
- オーナー:実行権限以外あり
- グループ:読み取りのみ
- その他:読み取りのみ
chmod 600 の意味
chmod コマンドを使ってファイルのパーミッションを設定する際、600 は次のように解釈される
-
最初の 6 は所有者(ユーザー)に対するパーミッションを示します。
- 6 は、読み取り(r) と 書き込み(w) の両方を許可することを意味します(4 = 読み取り, 2 = 書き込み)。
- つまり、所有者はファイルを読み書きできる。
-
次の 0 は、グループに対するパーミッションを示します。
- 0 は、読み取りも書き込みも実行も許可しないことを意味します。
- グループはファイルにアクセスできない。
-
最後の 0 は、その他のユーザーに対するパーミッションを示します。
- これも 0 なので、その他のユーザーはファイルにアクセスできません。
- なぜ 600 なのか
-
秘密鍵は非常に機密性が高い情報です。秘密鍵が第三者に渡ると、セキュリティが破られる可能性があるため、所有者だけに完全なアクセス権を与え、その他のユーザー(グループや他のユーザー)には一切アクセスを許可しないことが重要です。
chmod 600 により、次のことが保証されます:
- 所有者は秘密鍵を読み書きできる(鍵の管理や更新が可能)。
- グループやその他のユーザーはアクセスできない(秘密鍵が外部に漏れたり、悪用されたりするリスクを防ぐ)。
- もしパーミッションが 644 や 755 などであれば、グループやその他のユーザーにも読み取りや実行権限が与えられ、秘密鍵が外部に漏れるリスクが高まります。したがって、最低限のアクセス権限を設定することがセキュリティを強化するために非常に重要です。
結論
- chmod 600 は、秘密鍵が所有者のみによってアクセス可能であり、その他のユーザーには一切アクセスできない設定です。これにより、秘密鍵の漏洩や不正アクセスのリスクを最小限に抑えることができます。
参考になった記事
SSHは公開鍵・秘密鍵を使って楽にする by ラクスさんテックブログ
https://tech-blog.rakus.co.jp/entry/20210727/ssh
Permission(パーミッション)とは?基本的な仕組みや注意点
https://www.profuture.co.jp/mk/column/what-is-permission