概要

サーバーへ接続する際にSSHの公開鍵認証を使っています。一度設定をしてしまえば後は何もする必要はないのですが、設定が少し面倒です。

ここでは、私が行っている簡単なSSHの公開鍵認証の設定方法を紹介します。

環境

  • サーバー: Ubuntu 22.04
  • クライアント: macOS Monterey 12.5

SSHの鍵作成

最初に、SSHの鍵を作ります。

SSHの鍵の作成には、ssh-keygenコマンドを利用しました。

# ECDSA
ssh-keygen -t ecdsa -b 521

# RSA
ssh-keygen -t rsa -b 4096

鍵に使用するアルゴリズムによってコマンドのオプションが変化します。また、ビット数についてデフォルトを使用せず、それよりも大きなビット数を指定しています。ちなみに私はより新しいアルゴリズムであるECDSAを利用しています。

これで、公開鍵認証に用いる秘密鍵と公開鍵の作成ができました。

サーバーへの配置

次に、作成した鍵の内、公開鍵をサーバーに送ります。サーバーに公開鍵を送る際に、ログインしたいユーザーの~/.ssh/authorized_keysに鍵の中身を書き込むのですが、一度ログインをしなければいけないなど面倒です。もしも~/.ssh/authorized_keysファイルがない場合はファイルを作成して、適切なパーミッションを設定しなければならないため、さらに面倒です

そこで、なるべくならば、鍵のファイルとサーバーが分かっているのであれば自動で鍵の情報をサーバーに登録してくれればと思っていました。

実は、そのようなことを行うコマンドssh-copy-idがあらかじめ用意されています。

これを使うことで、ひとつのコマンドを実行するだけでサーバーに自動で公開鍵を配置してくれます。

ssh-copy-id ユーザー名@サーバーのアドレス

SSH接続するときと同じようにサーバーにログインするためのパスワードを求められます。認証できれば自動で公開鍵が登録されます。もしも、複数の鍵を利用している場合は、-iオプションで転送する鍵を指定することができます。

ssh-copy-id -i ~/.ssh/*** ユーザー名@サーバーのアドレス

このような方法によって、いままでのサーバーにログインしてauthorized_keysファイルを作成するという行程がなくなり、とても簡単に公開鍵を登録できるようになりました。

さいごに

ssh-copy-idコマンドがとても便利でした。公開鍵の転送を面倒に感じている、楽にやりたいという方は、是非利用してみてください。