Windows10からSSHでさくらのレンタルサーバに接続する

#Windows10でサーバーにSSH接続
Windowsターミナルを使えばいろんなアプリケーションをインストールしなくても、Windows 10 のそのままの環境でサーバーに接続できるようになってたので、手順をまとめてみます。:)

#環境
|クライアント|  |
| :-- | :-- |
|OS| Windows 10 pro  21H1  |
|Windows Terminal |Version 1.11.2921.0| 
|PowerShell |Version 7.2.0 | 
|OpenSSH|OpenSSH_for_Windows_8.1p1, LibreSSL 3.0.2|

|サーバー|  |
| :-- | :-- |
|サーバー|さくらのレンタルサーバー（スタンダード）|
|FTPサーバ名|MY_USER_NAME.sakura.ne.jp |
|FTPアカウント|MY_USER_NAME |
|パスワード|MY_PASSWORD|



#SSHでパスワードを使って接続

```powershell:PowerShell7
ssh MY_USER_NAME@MY_USER_NAME.sakura.ne.jp
MY_USER_NAME@MY_USER_NAME.sakura.ne.jp's password: MY_PASSWORD  #パスワード入力
Welcome to FreeBSD!
% 
#接続成功
```

これでひとまずは接続できますが、毎回パスワードを打つのが面倒です。そこで公開鍵認証を使った接続をしてみます。



#公開鍵認証を使った接続

公開鍵を`ssh-keygen`で作成し、サーバーへ転送、設定を行った上、任意の接続名のみで接続できるようにする、といった流れです。

##クライアントPCでキーペアを作成
Windowsターミナルを起動。PowerShellから`ssh-keygen`でキーペアを作成。

```powershell:PowerShell7
cd ~/.ssh
ssh-keygen -t rsa -f SAKURA_STD_MY_USER_NAME
```
パスフレーズはなしでしてみました。
オプション`-t rsa`は暗号鍵の形式、`-f`以下は任意のファイル名です。
フォルダ`.ssh`内に、`SAKURA_STD_MY_USER_NAME`（秘密鍵）と`SAKURA_STD_MY_USER_NAME.pub`（公開鍵）の2つのファイルが作成されているのを確認。


##公開鍵をサーバーへ転送。
scpコマンドで公開鍵のファイルをサーバーへ転送。
（サーバー・ユーザ名は適宜ご自分のものに変更してください。）

```powershell:PowerShell7
scp SAKURA_STD_MY_USER_NAME.pub MY_USER_NAME@MY_USER_NAME.sakura.ne.jp:./
#パスワードを求めらられるので入力して、以下のように表示されたら転送完了。
SAKURA_STD_MY_USER_NAME.pub  100%  576    40.0KB/s   00:00
```

##サーバーの設定
パスワード使った接続でログインしてください。

```powershell:PowerShell7
ssh MY_USER_NAME@MY_USER_NAME.sakura.ne.jp
#パスワードを入力してサーバーにログイン
```
`ls -a`で`.ssh`ディレクトリと、転送した公開鍵のファイルがあるか確認。
フォルダがない場合は`mkdir ~/.ssh`で作成。

公開鍵を`authorized_keys`に書き込み、パーミッションを`600`に変更します。

```bash:csh
% cat SAKURA_STD_MY_USER_NAME.pub > .ssh/authorized_keys
% chmod 600 ~/.ssh/authorized_keys
```
パーミッション`600`は、`rw-------` （所有者のみ読み書き可能）です。

##クライアントPCのconfigファイルの設定
キーペアを置いたフォルダに、`config`ファイルを作成。
HOSTの名前と、MY_USER_NAMEの部分は適宜ご自身のものに変更。

```text:config
HOST sakuraStdMyUserName
	HostName MY_USER_NAME.sakura.ne.jp
	User MY_USER_NAME
	IdentityFIle ~/.ssh/SAKURA_STD_MY_USER_NAME
```

Windowsターミナルから、PowerShellで以下の通り入力するとサーバーにログインできます。

```powershell:PowerShell7
ssh sakuraStdMyUserName
```
`Welcome to FreeBSD!`と出て、接続できたら成功！　:D


#WSL2のUbuntuからも接続

|WSL2|  |
| :-- | :-- |
|OS| Ubuntu 20.04  |
|OpenSSL|OpenSSH_8.2p1 Ubuntu-4ubuntu0.3, OpenSSL 1.1.1f  31 Mar 2020|

Windowsと同じようにキーペアを作成、転送。

```bash:WSL2
$ cd .ssh/
$ ssh-keygen -t rsa -f SAKURA_STD_MY_USER_NAME_WSL
$  scp SAKURA_STD_MY_USER_NAME_WSL.pub My_USER_NAME@MY_USER_NAME.sakura.ne.jp:./
```

サーバーにパスワードでログインし、
公開鍵を`authorized_keys`に追記します。　`>>`（追記になってるか注意。）

```bash:WSL2
$ cat SAKURA_STD_MY_USER_NAME_WSL.pub >> .ssh/authorized_keys
```

ローカルに`config`ファイルを作成。ご自身のものに適宜変更。

```text:~/.ssh/config
HOST sakuraStdMyUserNameWsl
	HostName MY_USER_NAME.sakura.ne.jp
	User MY_USER_NAME
	IdentityFIle ~/.ssh/SAKURA_STD_MY_USER_NAME_WSL
```

WSLから接続

```bash:WSL2
$ ssh sakuraStdMyUserNameWsl
```

接続できたら成功！　:D


#あとがき
これでターミナルから楽にサーバーに接続できるようになりました！
OpenSSHは今のWindows10にはすでにインストールされているみたい。Windowsターミナルは将来的に標準になるようですが、現在はインストールの必要があると思います。PowerShell7.2に関しても同じく。WSL2とUbuntuに関してはもちろんインストールが必要ですが、楽しいので入れてみたら良いと思う！:)))
いろんなサイトやブログを参考にさせてもらいました。先人のみなさんのたくさんの知恵に感謝です！ X))

##参考

https://cafehedgehogs.com/linux/88.html

https://help.sakura.ad.jp/206054152/

https://qiita.com/non0311/items/04222771ef9aa1970f7a

http://vdeep.net/sakura-ssh