ssh-keygenとは

ssh-keygenコマンドとは何か?

ssh-keygenコマンドは、sshで利用する認証用の鍵を生成・管理・変換するコマンド
sshプロトコルバージョン1のRSA鍵、sshプロトコルバージョン2のRSA鍵、DSA鍵が生成できる。

sshプロトコルのバージョンには2つある。
sshバージョン1 特許を持つ数種の暗号化アルゴリズムを使用し、通信ストリームに侵入者のデータ挿入を認める脆弱性
sshバージョン2 Red Hat Enterprise Linuxのopen sshセットはsshバージョン2を使用 鍵交換アルゴリズムを改良しており、バージョン2が推奨されている
RSA暗号とは 桁数が大きい合成数の素因数分解問題が困難であることを安全性の根拠とした公開鍵暗号の一つ
公開鍵:平文に暗号をかけるための鍵
秘密鍵:暗号文を元の平文に戻す為の鍵

ssh-keygenでは、公開鍵、暗号鍵両方つくる。

公開鍵認証の仕組み
事前にローカル側で作成した公開鍵を、ログイン先のサーバーに登録する。登録された公開鍵に対応した秘密鍵を持っているローカルから接続ができる。

実際に作ってみましょう
>ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (C:\Users\user/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in C:\Users\user/.ssh/id_rsa.
Your public key has been saved in C:\Users\user/.ssh/id_rsa.pub.
The key fingerprint is:
hogehoge user@DESKTOP-7QL099V
The key’s randomart image is:
+—[RSA 2048]—-+
|B*oo. |
|E*.o. |
|%.* .+ |
|**.o=.o |
| ooo.= S |
| =.o.. |
| o.*.* . |
| ..o *.+ |
| .. o. .. |
+—-[SHA256]—–+

.sshにid_rsa(秘密鍵:暗号文を元の平文に戻す為の鍵)、id_rsa.pub(公開鍵:平文に暗号をかけるための鍵)ができている。
公開鍵認証による接続は、このid_rsa.pub(公開鍵)をリモート先に置いて、id_rsa(秘密鍵)で開けてログインする。

リモート先の「~/.ssh/authorized_keys」に公開鍵を登録する
vagrantの場合だと、/home/vagrant 配下の/.ssh/authorized_keysが既に生成されている。

公開鍵の中身(authorized_keys/p)を見てみる
vagrantのauthorized_keys

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCwr/w9xN1wmHFNM3VCcf9wH9LRSLWxrE1tuQTRjp2VO//dmwwJZShapE+1/ylGt8QGnZSBNQqVPa/mOy9AZ47xOvnT9OXoKVinM3hASv02g+DsV5pUWujW6ToGXiW3CRtGvmDRMDpCs4ENBpxO82C3f7SavaqIiM3Wkrl5hYDJL0JkLKq8kcrDmDDAt3s1ZdkMt1255rXEGhDkHetdHFBw4ue7swumJ423tZShHRRQxzKEbUw44nBAvBAehogehoge vagrant

ssh-keygen -t rsaで作成した公開鍵(github_rsa.pub)

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDRvyk/aNTrWKq/U5h7B2gA2dSmrsy7ngAgatv0PPq15XYR7oxFtlJQ8rqhbI9yA7P3zzE1d6SQGsWi/RXYTI/4hGhm6gmItBmOs4YKFdwTH0FqMtIZQ7UwJ/I5bY7tt+SWAJJhg3hQuVAPtzU80PJhDEiw1SY/ZxIfTMdfDqIb6fIIB/yZxZycMno9wBQlE9lgPRGqCr7dENH80Ua99QTb+VLy9AF6XbYQHRdH+KZ4drFOFWTVyzDoGZiazpmguBZdmpxyhogehoge user@DESKTOP-hogehoge

基本的に一緒だ!最後のvagrant, user@DESKTOP-hogehogeがusernameかな?

chmod 600 ~/.ssh/authorized_keys で、パーミッションを追加

やべー、公開鍵認証を理解した俺、かっけー