はじめに
公開鍵認証のやり方について、怪しい情報が多いので自分なりに整理した。
もし、間違ってたらコメントをいただけるとありがたいです。
作業手順
以下の作業はすべて**一般ユーザ(ログインするユーザ)**で実行する。管理者権限は不要。
鍵生成
<**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クライアントになると考えて、そこにも公開鍵と秘密鍵を置くことになる。
この辺を理解して不必要に鍵のコピーをばらまくのはやめましょう。