sshするときに毎回パスワードを求められて、入力するのがめんどくさくなったので、公開鍵認証を用いてパスワードを入力することなくsshが行えるようにしました。
公開鍵認証のポイント
公開鍵認証のポイントは、パスワード認証とは違って、認証に必要な秘密情報(この場合は秘密鍵)そのものはネットワーク上に送出されないという点です。また認証に使われる署名は一時的なものであり、再利用はできないため、署名そのものを盗んでも意味がありません。そのためパスワード認証に比べ、通信の盗聴に強いと言えるでしょう。また仕組み上、秘密鍵を推測して偽造することは非常に困難です。こうした理由により、公開鍵認証を採用することで、パスワード認証よりもセキュリティレベルを上げることができるのです。
(引用)ニフラク.“SSH公開鍵認証とは”. ニフラク. 2022/3/29.
https://pfs.nifcloud.com/navi/words/ssh.htm, (2023/05/17)
秘密鍵と公開鍵作成する
パスワードの代わりに公開鍵を使って認証をします。そのため、まずは秘密鍵と公開鍵を生成します。
初めにhomeディレクトリに.ssh
のディレクトリが存在するかどうかを確認してください。
もし存在しない場合は作成してください。
その後.ssh
に移動してください。
次に以下のコマンドをターミナルで実行してください。
ssh-keygen -t ed25519 -C "your_email@example.com"
このコマンドは秘密鍵と公開鍵を作成するコマンドです。
実行するといくつかのことを聞かれますので対応をしていきます。
一つ目の質問ではどこになんて名前で保存するかを聞かれます。わかりやすい名前をつけることをお勧めします。ここで何も入力せずに進むと.ssh
のディレクトリの中にid_ed25519
という名前で作成されます。
なおこれ以降の説明ではid_ed25519
この名前を使って説明をしていきます。
二つ目の質問ではパスワードをどうするかを聞かれます。ここは何も入力せずに進んでください。
三つ目は二つ目と同じパスワードを入れてくださいと言われますので、そのまま何も入力せずに進んでください。
これで秘密鍵と公開鍵が作成されました。
.ssh
のディレクトリの中を確認するとid_ed25519
とid_ed25519.pub
が作成されていると思います。
名前を変えた場合は変えた名前の鍵が代わりに作成されていると思います。
ここで注意ですがこちらのid_ed25519
は秘密鍵なので漏らさないようにしてください。
念の為ですが公開鍵のパーミッションを600にしておきましょう。
chmod 600 id_ed25519.pub
公開鍵をログイン先サーバーに登録する
手元の環境の.ssh
にconfig
ファイルを作成してください。
config
の中に以下のように記述してください。
Host お好きなホスト名
HostName xxx.xxx.xxx.xxx
User ユーザー名
StrictHostKeyChecking yes
PasswordAuthentication no
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_ed25519
IdentitiesOnly yes
公開鍵をログイン先に転送します。
ローカルの公開鍵をログイン先のサーバーにコピーします。
ssh-copy-id -i id_ed25519 ユーザ名@xxx.xxx.xxx.xxx
これでログイン先のサーバーにコピーされたはずです。
次に今コピーしたid_ed25519.pub
の名前を以下のようにしてください。
authorized_keys
これでsshをするとパスワードを聞かれることがなく快適にログインができるようになったと思います。
ssh お好きなホスト名
参考
https://pfs.nifcloud.com/navi/words/ssh.htm
https://zenn.dev/noraworld/articles/ssh-rsa-sha1-disabled