パスワード認証からSSH公開鍵認証に変更する (Windows編)

リモートサーバー運用時のセキュリティ強化のため、パスワード認証からSSH公開鍵認証に変更を行なった際の備忘録です。



公開鍵認証とパスワード認証の違い、公開鍵認証のメリットについてはこちらをご覧ください。

https://qiita.com/angel_p_57/items/2e3f3f8661de32a0d432

Mac編はこちら

https://qiita.com/mikun/items/9eb289f64b36befdd064


## 環境
クライアントPC: Windows 10
リモートサーバー: Contabo VPS Ubuntu 20.04
使用する端末:「Tera Term」

こちらのサイトから「Tera Term」をインストールします。

https://forest.watch.impress.co.jp/library/software/utf8teraterm/

## 手順

1. Tera Termでキーペアを作成
2. 公開鍵をリモートサーバーへアップロード
3. 公開鍵をリモートサーバーへ登録
4. 公開鍵認証でリモートサーバーにログイン出来る事を確認

## 1. Tera Term でキーペアを作成

![スクリーンショット 2022-04-10 23.47.54.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/408917/85585d19-d6b6-7376-dd86-70713fc2dd6c.png)
設定＞SSH鍵生成をクリック

![スクリーンショット 2022-04-10 23.49.34.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/408917/598ec393-2037-13ed-112b-7fdbe7a869dd.png)
**ED25519** を選択して生成をクリック

##
**ED25519** は **Symbolブロックチェーン** のキーペア生成にも使われています。

https://docs.symbol.dev/ja/concepts/cryptography.html

![スクリーンショット 2022-04-10 23.55.18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/408917/4efca510-cb7a-c28d-ecf7-af75542965f6.png)
パスフレーズを任意で設定し、公開鍵の保存をクリック

![スクリーンショット 2022-04-11 0.06.18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/408917/e96acbd9-d552-e414-74b5-44bdfc3b09b0.png)


![スクリーンショット 2022-04-11 0.18.52.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/408917/a56c7b14-b000-7aa3-72db-7a917ea06d29.png)
秘密鍵の保存をクリック

![スクリーンショット 2022-04-11 0.22.16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/408917/cdacb68c-48b1-c588-c179-a7ecc7a08938.png)


![スクリーンショット 2022-04-11 0.22.49.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/408917/ed36c272-e7fd-3388-55bf-0d254c5b40c1.png)
公開鍵と秘密鍵を保存出来たら、閉じるをクリック

## 2. 公開鍵をリモートサーバーへアップロード
![スクリーンショット 2022-04-11 22.18.34.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/408917/a18495a9-85d7-fb7d-1840-c12523d84b2b.png)
リモートサーバーにログインし、クライアントPCからドラッグ&ドロップでファイルを転送する

![スクリーンショット 2022-04-11 22.19.35.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/408917/a9402d52-7fa3-e85b-1881-7979990a6257.png)
![スクリーンショット 2022-04-11 22.25.39.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/408917/41c442e6-793c-bdbf-046e-218ed3888adc.png)
ll または ls [enter]
「id_ed25519.pub」 が保存されている事を確認

## 3. 公開鍵をリモートサーバーへ登録
```
mikun@vmi845243:~$ cd ~ ←ログインユーザーのホームディレクトリで実行
mikun@vmi845243:~$ mkdir .ssh
mikun@vmi845243:~$ chmod 700 .ssh
mikun@vmi845243:~$ cat id_ed25519.pub > .ssh/authorized_keys
mikun@vmi845243:~$ chmod 600 .ssh/authorized_keys
mikun@vmi845243:~$ rm -f id_ed25519.pub
```

sshd_configを編集
```
sudo vi /etc/ssh/sshd_config

```

i で入力モード 
![スクリーンショット 2022-04-11 22.58.56.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/408917/24748bd8-b0ad-4f44-5860-544078a94aee.png)
[ESC]
:wq で保存

リモートサーバーのsshdを再起動して変更を反映する
```
sudo systemctl restart sshd
```


## 4. 公開鍵認証でリモートサーバーにログイン出来る事を確認
今のウィンドウは閉じずに、もう一つウィンドウを開く

![スクリーンショット 2022-04-11 23.08.54.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/408917/41b8270f-1d84-4258-c0ad-b1b384e5193f.png)


![スクリーンショット 2022-04-11 23.20.20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/408917/0bfdbe48-d96c-6d6b-bf0a-c9d0347147b4.png)


![スクリーンショット 2022-04-11 23.26.18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/408917/f858f4e8-1ce2-b6d4-bba5-7a1b98a64c87.png)

![スクリーンショット 2022-04-11 23.31.58.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/408917/c76eb452-b8e3-5fe0-c7d2-e854106a7b5d.png)
公開鍵認証によるログインが出来たら一旦ログアウトし、
パスワード認証でログインが拒否される事を確認出来ればOKです。


## 参考記事

http://centos.server-manual.com/centos7_ssh_teraterm_rsa.html