はじめに:パスワードをやめるだけなのに、意外と事故が起きる
サーバーにログインするとき、毎回パスワードを打つのは面倒ですし、安全面でも心もとありません。そこで多くの人が最初に取り組むのが SSH の鍵認証です。仕組み自体はシンプルですが、初めて設定するときには、ちょっとした手順の抜けで自分自身が締め出されることがあります。
この記事では、設定手順の細かいコマンド解説よりも、「どこでつまずきやすいか」「何を先に確認しておくと安全か」という注意点に絞って整理します。
鍵認証の仕組みを一言でつかむ
鍵認証では、「秘密鍵」と「公開鍵」という対になったファイルを使います。公開鍵はサーバー側に置き、秘密鍵は手元のマシンに置きます。ログイン時には、秘密鍵を持っていることをサーバーに証明できれば入れます。パスワード自体はネットワークに流れません。
ここで大切なのは、公開鍵は配っても構わないが、秘密鍵は決して他人に渡さない、という非対称性です。この区別を取り違えると、あとの注意点がすべて意味を失います。
注意点1:秘密鍵と公開鍵を取り違えない
鍵を作ると、たとえば「id_ed25519」と「id_ed25519.pub」のような 2 つのファイルができます。拡張子 .pub が付いているほうが公開鍵です。サーバーに登録するのはこちらだけです。
- サーバーに貼り付けるのは .pub 付きのファイルの中身
- 秘密鍵をメール、チャット、クラウドの共有フォルダに置かない
- 秘密鍵をそのままバックアップに入れる場合は保管先の権限に注意する
注意点2:パスフレーズは付けておく
鍵を作る際、パスフレーズの入力を求められます。面倒で空にしたくなりますが、空のままだと、秘密鍵のファイルが漏れた時点でそのまま使われてしまいます。パスフレーズは、ファイルが盗まれたときの最後の防壁です。
毎回入力するのが煩わしい場合は、ssh-agent に鍵を一時的に預ける方法があります。パスフレーズを守りつつ、入力の手間を減らせます。
注意点3:鍵の種類は新しめのものを選ぶ
現在は Ed25519 という方式が広く使われており、鍵が短く、扱いやすいのが特徴です。古い環境や特殊な機器では対応していないこともあるため、接続先のドキュメントで対応状況を確認しておくと安心です。RSA を選ぶ場合は、十分な長さの鍵にします。
注意点4:サーバー側のパーミッションが厳しすぎる、ではなく緩すぎる
鍵認証がなぜか通らない原因として、とても多いのがファイルやディレクトリの権限です。SSH サーバーは、権限が緩すぎると安全でないと判断して、鍵を無視することがあります。
- ホームディレクトリは、自分以外が書き込める状態にしない
- .ssh ディレクトリは、自分だけが読み書きできる状態にする
- authorized_keys も、自分以外が書き込めないようにする
- 手元の秘密鍵も、自分だけが読める権限にする。緩いと ssh コマンド自身が警告して使用を拒否する
具体的な数値は環境や運用によって変わることもありますが、「自分だけが触れる」状態を目指すのが基本です。
注意点5:公開鍵の登録は ssh-copy-id が楽。ただし手作業でも壊さない
公開鍵の登録には、ssh-copy-id というコマンドが用意されています。接続先に公開鍵を追記し、必要なディレクトリも作ってくれるので、初めてならこれが無難です。
手作業で authorized_keys に貼る場合は、次の点に気をつけます。
- 1 つの鍵は 1 行で書く。途中で改行が入ると無効になる
- 既存の内容を上書きせず、追記する
- 前後に余計な文字や空白が混ざっていないか確認する
注意点6:パスワード認証を切るのは、鍵でログインできると確認してから
いちばん事故が起きやすいのがここです。鍵認証が使えるようになると、安全のためにパスワード認証を無効化したくなります。それ自体は有効な対策ですが、鍵でのログインが成功することを確認する前に切ってしまうと、誰も入れなくなります。
安全な進め方の例を挙げます。
- いま使っているログインセッションは閉じずに残しておく
- 別の端末や別のウィンドウから、鍵でログインできるか試す
- 成功を確かめてから、sshd の設定を変更する
- 設定変更後も、既存セッションを残したまま、新しい接続で動作を確認する
- 設定ファイルの文法チェックを行ってから、サービスを再読み込みする
クラウドや VPS では、コンソール経由で復旧できる場合もありますが、使えるかどうかは事業者次第です。復旧手段があるかを、事前に調べておくと気持ちが楽になります。
注意点7:うまくいかないときは、クライアント側から詳細表示で確かめる
ログインできないとき、いきなり設定をいじるのは避けましょう。ssh コマンドに詳細表示のオプション(-v)を付けると、どの鍵を試し、どこで拒否されたかが見えます。サーバー側では、認証ログを確認すると、権限の問題や鍵の形式の問題が書かれていることがよくあります。
原因を見てから直す、という順番を守るだけで、無駄な試行錯誤はかなり減ります。
あると便利:設定ファイルで接続を整理する
手元の ~/.ssh/config に、接続先ごとのホスト名、ユーザー名、使う鍵を書いておくと、長いコマンドを毎回打たずに済みます。複数の鍵を使い分けるときにも役立ちます。ただし、意図しない鍵を全サーバーに送ってしまわないよう、接続先ごとに使う鍵を明示するのがおすすめです。
まとめ:焦らず、逃げ道を残して進める
SSH の鍵認証は、一度整えてしまえば安全で快適です。初めての設定で押さえておきたいのは次の点でした。
- 公開鍵と秘密鍵の区別を徹底する
- パスフレーズを付け、必要なら ssh-agent を使う
- 権限は「自分だけが触れる」状態にする
- 公開鍵は 1 行で、追記の形で登録する
- パスワード認証を切る前に、別セッションで鍵ログインを確認する
- 詰まったら、設定を触る前にログと詳細表示を見る
最も大切なのは、作業中のセッションを閉じずに、いつでも戻れる状態で進めることです。それさえ守れば、初めての鍵認証でも落ち着いて設定できます。