1. 鍵ペアの作成
とりあえず作るって場合はRSAで、
ssh-keygen -t rsa -b 4096
より強い鍵が必要な場合は、ECDSAやED25519を使って、
ssh-keygen -t ecdsa -b 521 -C [mail-address or username@hostsname]
ssh-keygen -t ed25519 -C [mail-address or username@hostname]
-f
オプションでファイル名を指定できるので、適宜変更する。
実行すると、秘密鍵(id_rsa
等)と公開鍵(id_rsa.pub
等)が作成されます。
秘密鍵・公開鍵の作成方法は、https://bioscryptome.t-ohashi.info/linux/ssh-keygen/も参照してください。
2. 公開鍵の登録
ホスト側で作成した公開鍵を、サーバ側に登録します。~/.ssh/authorized_keys
というファイルを作り、そこに追記していきます。
方法1. ssh-copy-id
を使う
ssh-copy-id
を使うと自動でauthorized_keysに追記してくれます。
パスワード認証で登録
ssh-copy-id -i id_rsa.pub fuga@example.com
秘密鍵で登録
ssh-copy-id -i id_rsa.pub -o IdentityFile=~/.ssh/id_rsa fuga@example.com
方法2. scp
で頑張る
ホスト側
公開鍵をscp
を使ってリモート側に転送します。
$ scp ~/.ssh/id_rsa fuga@example.com
$ ssh fuga@exapmle.com
リモート側
- 受け取った公開鍵のファイル名を
authorized_keys
変更して.ssh
下に保存します。
$ cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
authorized_keys
のパーミッションを、0600
に変更します。
$ chmod 600 ~/.ssh/authorized_keys
方法3. マニュアルで頑張る
パスワード認証や、ssh-copy-id
が使えない場合は、authorized_keys
に何らかの方法でコピペします。
3. ssh-agent
の設定
パスフレーズを設定した場合は、省略できるようにする。
$ ssh-agent bash
$ ssh-add ~/.ssh/id_rsa
4. configの設定
サーバ接続時に、作成した秘密鍵を使用するよう~/.ssh/config
に情報を登録しておきます。
Host hoge
HostName exapmle.com
IdentityFile ~/.ssh/id_rsa
User fuga
5. 接続確認
ホスト名だけでログインできる。
$ ssh hoge