SSH鍵を使用してサーバにログインする

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

リモート側

  1. 受け取った公開鍵のファイル名をauthorized_keys変更して.ssh下に保存します。
$ cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
  1. 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

See Also