サーバへのSSHログイン、まだパスワードですか?公開鍵認証にすると、安全で楽になります。仕組みと設定をまとめます。
公開鍵認証の仕組み
鍵は「秘密鍵」と「公開鍵」のペアで作ります。
- 秘密鍵 … 手元(クライアント)に置く。絶対に人に渡さない。
- 公開鍵 … サーバに置く。誰に見られても大丈夫。
ログイン時、サーバは公開鍵で問いを出し、対応する秘密鍵を持つ人だけが答えられます。パスワードを送らないので、盗聴や総当たりに強いのが利点です。
鍵を作る
ssh-keygen -t ed25519 -C "myname@example"
~/.ssh/id_ed25519(秘密鍵)と id_ed25519.pub(公開鍵)ができます。
公開鍵をサーバへ登録
ssh-copy-id user@server
これでサーバの ~/.ssh/authorized_keys に公開鍵が追記されます。以降は鍵でログインできます。
パスワード認証を無効化(仕上げ)
鍵ログインを確認したら、サーバ側でパスワード認証を止めるとより安全です。
# /etc/ssh/sshd_config
PasswordAuthentication no
PermitRootLogin no
systemctl restart sshd
注意: 鍵ログインが成功することを必ず確認してから止めること。別セッションを開いたまま作業すると、締め出し事故を防げます。
秘密鍵はパスフレーズで守る
秘密鍵ファイルが盗まれても悪用されないよう、鍵作成時にパスフレーズを付けます。ssh-agent を使えば、毎回入力せずに済みます。
よくあるハマり
authorized_keysや.sshのパーミッションが緩いと弾かれる(.sshは700、authorized_keysは600)- 鍵の種類が古い(RSA 1024など)と拒否される環境がある
まとめ
公開鍵認証は、安全性と利便性を両立できる基本のセキュリティ対策です。踏み台サーバ経由の運用でも必須になります。「パスワードSSHを鍵に置き換える」は、どの現場でも通用する良い習慣なので、早めに身につけておくのがおすすめです。