はじめに
公開鍵認証のやり方について、怪しい情報が多いので自分なりに整理した。
もし、間違ってたらコメントをいただけるとありがたいです。
作業手順
以下の作業はすべて一般ユーザ(ログインするユーザ)で実行する。管理者権限は不要。
鍵生成
<sshクライアントで作業>
公開鍵と秘密鍵がなければ、ssh-keygen
で作る。
過去に作ったことがあれば使いまわすことになる。
(秘密鍵はユーザ自身の証明なので、あるユーザが複数のサーバにログインする場合でも
同じ鍵で複数のサーバにログインすることになる)
コマンドを実行するとファイル名を聞かれるが、基本的にはデフォルトでいい。
パスワード(みたいなもの)を入力するとホームディレクトリの'.ssh/'に2つのファイルが生成される。
id_rsa.pub
が公開鍵で他人に教えてもいいもの。
id_rsa
が秘密鍵で誰にも教えてはいけない。
ls -l
で読み取り権限を確認すると、id_rsa
は自分以外も読めないようになっている。
公開鍵の登録
<sshサーバで作業>
ログインするユーザのホームディレクトリ直下の.ssh/
(なければ作る)にauthorized_keys
というファイルを作る。
もしあれば追記する。
ファイルの中身(もしくは追記する内容)は公開鍵情報=id_rsa.pub
の一行をそのままコピーする。
ディレクトリ.ssh
とファイルauthorized_keys
を新たに作った場合はパーミッションをchmod
で変更する。
chmod 700 .ssh
cd .ssh
chmod 600 authorized_keys
補足
ここまでの手順でサーバにログインできるようになるはず。
サーバ側に公開鍵、秘密鍵のどちらもコピーする必要はなく、クライアントに鍵のペア、サーバにauthorized_keysがあればログインできる。
ただし、多段sshでそこからさらに別の場所にsshログインする場合は、その踏み台サーバがsshクライアントになると考えて、そこにも公開鍵と秘密鍵を置くことになる。
この辺を理解して不必要に鍵のコピーをばらまくのはやめましょう。