さくらのＶＰＳを使いはじめる（SSHの設定 公開鍵認証・ポート番号変更・rootでのログイン不可）

#SSHとは
* Secure Shell（セキュアシェル、SSH）は、暗号や認証の技術を利用して、安全にリモートコンピュータと通信するためのプロトコル。パスワードなどの認証部分を含むすべてのネットワーク上の通信が暗号化されます。

>使用ポート番号
>TCP/UDP 22番

>備考
>第3者がポートスキャンを使用してSSHサービスが実行されているかどうかを確認するとき、
>大抵の場合、 ウェルノウンポートである1023番ポートまでしかポートスキャンを
>行わないと言われています。 
>　
>このため、SSHで利用するポート番号を22番ポートから1024番ポート以上（上限： 65535）に
>変更しておくことにより、第3者からの攻撃を未然に防げる可能性が高くなります。

#暗号化方式
* 現在ではRSA暗号が方式を用いるのが最も一般的です。

>DSAとRSAの違い
>DSAが、ユーザ認証しかカバーしないのに対して、
>RSAは、ユーザ認証、通信の暗号化をカバーする点です。
>
>そもそもRSAには特許があったため自由に使用できなかったので、
>DSAを使っていたという経緯があります。
>現在では、SSH2ではRSAを使うのが主流です。

* 暗号鍵長に関しては現在は2048bit以上が推奨されています。

>当初は1024bitが標準的に用いられていましたが、各種計算機の処理能力の向上に伴い
>安全性が十分ではなくなりつつあったため、
>CA/ ブラウザフォーラム(証明書に関する規定を定める世界団体)にて、
>鍵長 1024bit証明書の使用期限が2013年12月31日までと策定されています。

#SSH 接続用の RSA 鍵を作成する
* Tera Termの場合

>Tera Termには標準でSSH鍵の生成機能が実装されています。
>
>Tera Termを起動すると下記の「新しい接続」のウィンドウが立ち上がりますが、
>これは一度キャンセルします。
>
>![ssh-0.png](https://qiita-image-store.s3.amazonaws.com/0/13000/e4b1ebb2-6341-bac5-e8d3-4b84b5116ff1.png)
>
>
>
>
>下記の図の[設定]⇒[SSH鍵生成]をクリックします。
>
>![ssh-1.png](https://qiita-image-store.s3.amazonaws.com/0/13000/31f619c8-15b4-b746-1b91-f8cb4fb086a8.png)
>
>
>TTSSH:鍵生成のウィンドウが立ち上がりますので、
>鍵の種類：RSA
>ビット数：2048以上
>となっていることを確認し「生成」ボタンをクリックします。
>
![ssh-3.png](https://qiita-image-store.s3.amazonaws.com/0/13000/dce7ffc4-474c-bbd8-f4aa-63cfda01fe5e.png)
>
>「鍵を生成しました。」という表示が出ると下記の3項目の入力が可能になります。
> * 鍵のパスフレーズ
> * パスフレーズの確認
> * コメント 
>
>![ssh-5.png](https://qiita-image-store.s3.amazonaws.com/0/13000/7ef58b9f-44f6-cfa6-1fe2-ce80f374a3cb.png)
>
>
>3項目を記入し終わったら「公開鍵の保存」「秘密鍵の保存」をそれぞれ押して、
>2つの鍵ファイルとして保存します。
>この鍵を利用するアカウント名と対象サーバー名がわかるように保存しておく必要があります。
>また、この2つのファイルはペアになっているためそれがわかるように各ペアごとに
>1フォルダにまとめて保存しておくことをお勧めします。
>
>※コメント欄ですが、ここに記入した内容は公開鍵のファイル内に記入されます。
>　基本的には半角文字での入力をお勧めします。
>　何を記入してもかまいませんが、参考までに私の場合は「アカウント名＠サーバー名」
>　といった形式でコメントを記入することにしています。

# サーバーの SSH 設定を変更（ユーザの設定）

既に作成されている一般ユーザ（ユーザ例：crimson）でサーバーにSSHでログインし、
Tera Termのウィンドウ内に、先ほど作成した公開鍵（id_rsa.pub）を
ドラッグ＆ドロップすると、ログインユーザのホームディレクトリに
そのファイルがアップロードされます。

```bash
$cd
$mkdir ./.ssh
$chmod 700 ./.ssh
```


```bash
$ mv ./id_rsa.pub ./.ssh/authorized_keys
$ cd ./.ssh
$ chmod 600 ./authorized_keys
```

以上で、公開鍵のサーバー側の設定が完了となります。

# サーバーの SSH 設定を変更（sshdの設定）

最後にsshdの設定変更ファイルを変更し下記の3項目に対応します。
* sshdのポート番号を変更する
* rootでのログインをできなくする（一般ユーザでログイン後に管理者へと切り替える）
* 通常のユーザ名、パスワードでのログインをできなくする。

```bash
$ su -
# vi /etc/ssh/sshd_config
```

sshd_configの変更点は下記の3点です。
* sshdのサービスのポートを22番から19372へと変更（1024番ポート～65535番ポートの中で空いているもの）
　 ※念のため下記のサービスで該当ポートが使用されていないことを確認してください。
　 http://www.cman.jp/network/support/port.html
* PermitRootLogin ( root のログイン ) をyes　から　no　へ変更
* PasswordAuthentication ( パスワードによるログイン ) を yes　から　no　へ変更

書式は設定名の後に yes で有効、no で無効、行頭に # でコメントアウトとなります。
例えば、以下のように書きます。

```bash:sshd_config

1 #Port 22
2 Port 19372
3
4 ・・・中略・・・
5
6 #PermitRootLogin yes
7 PermitRootLogin no
8
9 ・・・中略・・・
10 
11 #PasswordAuthentication yes
12 PasswordAuthentication no
```


編集して保存したら、SSH デーモンを再起動します。

```bash
# service sshd restart
Stopping sshd:                                             [  OK  ]
Starting sshd:                                             [  OK  ]
```

サーバーから一度ログオフし、下記のとおりIPアドレスと
変更したsshdのポート番号を指定して「OK」をクリックします。

![ssh-6.png](https://qiita-image-store.s3.amazonaws.com/0/13000/5883e183-f640-4ed3-233e-c7f1d3789467.png)




次の画面ではユーザ名、鍵のパスフレーズを入力し、
RSA/DSA/EC DSA鍵を使うを選択し、秘密鍵のボタンをクリックし秘密鍵のパスを設定、
最後に「OK」を押すことで、サーバーへ鍵認証方式でログインできます。

![ssh-7.png](https://qiita-image-store.s3.amazonaws.com/0/13000/fdb9f989-8ae0-9025-0f75-c96af94a7f14.png)

問題なくログインすることができました。

![ssh-8.png](https://qiita-image-store.s3.amazonaws.com/0/13000/0b14751d-9b18-5167-4d72-2117a0450b51.png)

※長くなってしまいましたので、WinSCP・Putty・Cyberduckなど、その他のSSHクライアント
　それぞれで利用可能な鍵の形式に関しては別途まとめたいと思います。