【Debian 8 Jessie】sshの設定をこれだけはやっておく

この記事は、下記の記事を構成している記事のひとつです。
[さくらのVPS と Debian 8 Jessie で独自ドメインのWebサイトを立ち上げる手順](http://qiita.com/osktak/items/7224bd263288b40b4b98)

・さくらのVPS（プラン512）
・Debian 8 Jessie（さくらのVPS カスタムインストール）
の環境を前提にしています。

# sshのポート番号を変更する
デフォルトでは、ポート22に設定されていますが、有名過ぎるポート番号なので、ちょっとわかりにくいポート番号に変更します。下記の例では、1234に変更しています。

```tarminal:[hoge]$
sudo vi /etc/ssh/sshd_config
```
```Bash:/etc/ssh/sshd_config
#Port 22
Port 1234
```

設定を変更したら、sshdを再起動します。

```tarminal:[hoge]$
sudo systemctl restart ssh
```

# sshにrootユーザでログイン出来ないようにする
今のところ、rootユーザが直接sshログイン出来る必要性が全くないので、rootユーザでは直接sshログイン出来ないように設定を変更します。

```tarminal:[hoge]$
sudo vi /etc/ssh/sshd_config
```
```Bash:/etc/ssh/sshd_config
#PermitRootLogin without-password
PermitRootLogin no
```

設定を変更したら、sshdを再起動します。

```tarminal:[hoge]$
sudo systemctl restart ssh
```

# 公開鍵、秘密鍵を作成する
認証したいユーザでサーバにログインし、公開鍵と秘密鍵のキーペアを作成します。
下記の例では、hogeユーザでキーペアを作成しています。

```tarminal:[hoge]$
ssh-keygen -t rsa
```
```
Generating public/private rsa key pair.
Enter file in which to save the key (/home/hoge/.ssh/id_rsa): ★[Enter]を押下★
Created directory '/home/hoge/.ssh'.
Enter passphrase (empty for no passphrase): ★パスフレーズを入力★
Enter same passphrase again: ★パスフレーズを再入力★
Your identification has been saved in /home/hoge/.ssh/id_rsa.
Your public key has been saved in /home/hoge/.ssh/id_rsa.pub.
The key fingerprint is:
xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx hoge@hostname
The key's randomart image is:
+---[RSA 2048]----+
|         .   .o. |
|        oo.  ..  |
|        .o+...   |
|         *..+    |
|        S .+.    |
|       oE..  .   |
|      . oo    .  |
|       . o.. o   |
|        . . o..  |
+-----------------+
```

公開鍵

```
/home/hoge/.ssh/id_rsa.pub
```

秘密鍵

```
/home/hoge/.ssh/id_rsa
```


# 公開鍵を配置する
作成した公開鍵を、authorized_keys という名前のファイルで配置します。

```tarminal:[hoge]$
cat /home/hoge/.ssh/id_rsa.pub >> /home/hoge/.ssh/authorized_keys
```

authorized_keys のパーミッションを、600に設定します。

```tarminal:[hoge]$
chmod 600 /home/hoge/.ssh/authorized_keys
```

id_rsa.pubは、削除して大丈夫です。

```tarminal:[hoge]$
rm /home/hoge/.ssh/id_rsa.pub
```

# 秘密鍵をクライアント側にダウンロードする
秘密鍵なので、ダウンロード自体をセキュアに実施する必要があります。
下記は、クライアントPC側から、SCPコマンドで取得する例です。
（WindowsPC で、WinSCPなどを使用してダウンロードしてもOKですが、その手順は省略します。）
<font color="Red">注意！クライアント側作業です。</font>

```tarminal:クライアントPC側
scp -P 1234 hoge@ipaddress:/home/hoge/.ssh/id_rsa ~/.ssh/.
```

ダウンロードが終われば、サーバ側に秘密鍵は不要ですので、削除します。
<font color="Red">注意！サーバ側作業です。</font>

```tarminal:[hoge]$
rm /home/hoge/.ssh/id_rsa
```

# 公開鍵認証でsshログインする設定
公開鍵認証を有効にします。

```tarminal:[hoge]$
sudo vi /etc/ssh/sshd_config
```
```bash:/etc/ssh/sshd_config
PubkeyAuthentication yes
```

設定を変更したら、sshdを再起動します。

```tarminal:[hoge]$
sudo systemctl restart ssh
```

# クライアント側から公開鍵認証でsshログインする
ssh -p [ポート番号] -i [秘密鍵ファイル] -l [ユーザー名] [ipaddress or hostname]
（WindowsPCで、Teratermや、puttyでログインしてもOKですが、その手順は省略します。）
<font color="Red">注意！クライアント側作業です。</font>

```tarminal:クライアントPC側
ssh -p 1234 -i ~/.ssh/id_rsa -l hoge hostname
```
```
Enter passphrase for key '/home/hoge/.ssh/id_rsa': ★パスフレーズを入力★
```

# パスワード認証でログイン出来ないようにする
<font color="Red">注意！サーバ側作業です。</font>

```tarminal:[hoge]$
sudo vi /etc/ssh/sshd_config
```
```bash:/etc/ssh/sshd_config
#PasswordAuthentication yes
PasswordAuthentication no
```

設定を変更したら、sshdを再起動します。

```tarminal:[hoge]$
sudo systemctl restart ssh
```