はじめに
SSH ログイン、まだパスワード入力してるの?
公開鍵認証方式にすれば省略できるよ!
クライアント側:Linux(WSL/2 環境も含む)
サーバ側:Linux
以下、サクッとクライアント側の作業。
サクッと鍵の生成
色々聞かれるけれど全てエンター連打でOK。
$ ssh-keygen -t ed25519
サクッと鍵をサーバに登録
上記で生成した公開鍵を、ログインしたいサーバに登録する。
$ cat ~/.ssh/id_ed25519.pub | ssh <ユーザ名>@<ホスト> 'cat >> ~/.ssh/authorized_keys'
以上!動作確認!
$ ssh <ユーザ名>@<ホスト>
パスワード無しでログインできる!ヤッター!
詳細・メモ書き
ログインできない場合
ゆってなかったけど、サーバ側の準備ができていないとサクッといけないんすわ。
サクッといかない場合は、接続先のサーバ側で以下を確認。
~/.ssh/authorized_keys ファイルが正しく存在すること
.ssh
ディレクトリと authorized_keys
ファイルのパーミッションが正しいことを確認する。
$ mkdir ~/.ssh
$ chmod 700 ~/.ssh
$ touch ~/.ssh/authorized_keys
$ chmod 600 ~/.ssh/authorized_keys
公開鍵認証が有効になっていること
sshd の設定ファイルを開く。
$ sudo vim /etc/ssh/sshd_config
PubkeyAuthentication
がコメントアウトか、または no
だと公開鍵認証方式が無効になっているので、以下のように yes
で設定する。
PubkeyAuthentication yes
sshd サービスを再起動して反映
$ sudo systemctl restart sshd
鍵の署名アルゴリズムの種類と選択
RSA
セキュリティ面でも速度面でも積極的に選択する理由が無い。
セキュリティ面は 4096bit ならまだ大丈夫らしい。
無指定では 2048bit で生成される。
$ ssh-keygen -t rsa -b 4096
ECDSA
RSA より安全で高速な署名アルゴリズムを使用している。
鍵長は 256, 368, 521bit。512じゃなくて521で正しい。
521bit でも RSA より高速で、今は無難な選択。
$ ssh-keygen -t ecdsa -b 521
Ed25519
新しいものなので対応していない SSH サーバに出会うかも。
ECDSA より安全で高速な署名アルゴリズムを使用している。
鍵長は 256bit 固定。
$ ssh-keygen -t ed25519