0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【SSH】パスワード認証から公開鍵認証に移行する

Posted at

はじめに

LinuxサーバにOpenSSHサーバとクライアントをインストールし、いざSSH接続しようとしたときの認証方式はパスワード認証です1
今回は公開鍵認証方式に移行する手順を書いていこうと思います。
公開鍵認証方式は、秘密鍵と公開鍵を使ったパスワード入力が必要ない方式で、総当たり攻撃やパスワード流出の対策にもなります。
今回試したLinuxサーバは、クラウド上に用意したUbuntu22.04、ローカルPCはWindowsにWSL2を使用して構築したUbuntu22.04です。

キーペアの作成

では早速、秘密鍵と公開鍵を作成していきます。
ローカルPCで以下を入力します。

ターミナル
ssh-keygen -t rsa -b 4096

RSA暗号を使った4096ビットの鍵を生成します。
途中でパスワードの入力を求められますが、何も入力せずEnterを押しておきます。
ssh-keygen

デフォルトでは、以下の場所に鍵が作成されます。

場所 ファイル名
公開鍵 ~/.ssh id_rsa.pub
秘密鍵 ~/.ssh id_rsa

公開鍵をサーバにコピーする

公開鍵認証に使用するため、生成した公開鍵をサーバにコピーします。2

ターミナル
ssh-copy-id [アカウント名]@[ホスト名]

こうすることでLinuxサーバの~/.ssh/authorized_keysに公開鍵が追加されます。
また、ssh-copy-idは、ファイルとディレクトリが存在しなければ自動で作成もしてくれる優れものなコマンドです。
念のため、作成されたファイルのパーミッションを確認しておきたいと思います。3

ターミナル
sudo stat /home/tester1/.ssh/authorized_keys -c '%a'
 -> 600

公開鍵認証方式でログインできるか試してみる

ここまで終えると、公開鍵認証方式でLinuxサーバへのログインができるようになっているはずです。
実際に試してみたいと思います。
ssh [ユーザ名]@[ホスト名]
この結果、パスワードの入力を求められることなく、Linuxサーバにログインできれば成功です。

二要素認証を取り入れてみる

ここまでの状態で、秘密鍵が保存されているローカルPCを使ってさえいれば、誰でもLinuxサーバにログインできるようになりました。
それでは困るといった場合には、第三者がログインできないように、更にセキュリティを強化できます。
それについては、別記事を書きたいと思います。

パスワード入力を完全に制限する

最後の締めくくりとして、該当のユーザに対してパスワード入力でログインできなくします。


注意: これを行うメリット・デメリットを示します。

  • メリット
    • 特定のローカルPC、特定のデバイスを持つ者しかログインできないため、セキュリティが高い
  • デメリット
    • ハードウェアが故障した場合など、ログイン不可となった際の対応策を用意しておく必要がある

まず、他人のローカルPCから該当ユーザでログインを試みるとパスワード入力を求められることを確認しておきます。
例えば、ローカルPCに仮想環境を作っている場合、VMからは公開鍵認証で直接ログインできますが、
ホストPCのPowerShellからはパスワード入力しないとログインできないといった状態です。

以下の編集を行い、パスワード入力を制限してみます。

/etc/ssh/sshd_config
PasswordAuthentication no

sshを再起動(sudo systemctl restart ssh)します。
これで、他人のローカルPCからはログインできなくなりました。
(ちなみに、アクセスしてみるとPermission denied (publickey).となります)

以上で、パスワード認証から公開鍵認証に移行することができました。

  1. PasswordAuthentication yes

  2. 公開鍵をGithubなどに登録してある場合、ssh-import-idコマンドが使えるらしいです。

  3. パーミッション600は所有者のみ読込、書込ができる権限です。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?