LinuCレベル1 Linuxのインストールと仮想マシン・コンテナの利用 問42
Linuxのインストールと仮想マシン・コンテナの利用/インストール、起動、接続、切断と停止ユーザーaliceがsshコマンドで公開鍵認証を使ってサーバーへ接続しようとしたところ、「Permissions 0644 for '/home/alice/.ssh/id_rsa' are too open.」という警告が表示され、秘密鍵が使われずにパスワードを求められた。この問題を解消するためにクライアント側で実行するコマンドとして適切なものはどれか。
当サイトのオリジナル問題(LinuCレベル1の出題範囲「Linuxのインストールと仮想マシン・コンテナの利用」に対応。実際の試験問題ではありません)
- Achmod 644 ~/.ssh/id_rsa.pub
- Bchmod 755 ~/.ssh
- Cchmod 600 ~/.ssh/id_rsa
- Dchmod 666 ~/.ssh/known_hosts
正解:C
解説
OpenSSHのsshコマンドは、秘密鍵ファイルにグループやその他のユーザーの権限(読み取りなど)が付いていると、安全でないと判断してその鍵を使わずに無視します。警告文の「too open」はこの状態を指しています。chmod 600 ~/.ssh/id_rsa(または400)で所有者だけが読み書きできるようにすれば、鍵が使われるようになります。公開鍵(id_rsa.pub)は他人に読まれても問題がないため、644のままで構いません。
選択肢ごとの解説
- A誤り。公開鍵 id_rsa.pub は他人に読まれても問題のないファイルで、644は一般的な設定です。警告の対象は秘密鍵 id_rsa なので、公開鍵のパーミッションを変えても解消しません。
- B誤り。~/.ssh ディレクトリを755にしても、秘密鍵ファイル自体が他人から読める状態は変わりません。警告は秘密鍵ファイル id_rsa のパーミッションを指摘しています。
- C正しい。秘密鍵を所有者だけが読み書きできる600にすれば、sshは鍵を安全とみなして公開鍵認証に使います。
- D誤り。known_hosts は接続先のホスト鍵を記録するファイルで、警告とは関係がありません。666にすると他人が書き換えられるようになり、かえって危険です。