PuTTYで公開鍵認証方式でのSSH接続を行う手順まとめ


#PuTTYで公開鍵認証方式を使ったSSH接続

##PuTTYのインストールと使い方
###インストール

まず次のリンクからPuTTYをダウンロードします。「Zip file:」と書かれた右側の「putty.zip」をクリックして下さい。

[PuTTY Download Page](http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html)


ダウンロードができたら任意のフォルダに解凍してください。インストールは以上で完了です。

###PuTTYを使ったSSH接続方法
PuTTYがインストールできたら、PuTTYを起動して下さい。
「PuTTY Configuration」というウインドウが立ち上がるので、「Host Name (or IP address)」の欄に自分のサーバーのIPアドレスを入れて「OPEN」をクリックします。

![01.jpg](https://qiita-image-store.s3.amazonaws.com/0/93779/80aa9957-04da-e0b2-3161-d297fce98ce3.jpeg)


「OPEN」をクリックしたら「PuttY Security Alert」というウインドウが立ち上がります。詳しい説明は省略しますが、「はい」を押して問題ないので、「はい」をクリックします。
端末ウインドウが立ち上がるはずなので、次のように入力します。

```
login as:root
root@***.**.**.***'s password:←rootのパスワードを入力
```

画面に次のような文字列が表示されればログイン成功です。

```
[root@******** ~]#
```

##root権限を持った一般ユーザーを作成する
###一般ユーザーの作成
PuTTYでSSH接続できるようになったらまず、新たに一般ユーザーを作成します。（rootユーザーで直接ログインできてしまうのは危険なためです）。今回は、「testuser」というユーザーを作成する事にします。
一般ユーザーを作成するには、次のコマンドを入力します。

```
# adduser testuser
# passwd testuser
New password:←testuserのパスワードを入力
```

###一般ユーザーへのroot権限付与
一般ユーザーのままでは重要な処理が行えずに不便なので、一般ユーザーにroot権限を与えます。
まずは次のコマンドを入力して指定の一般ユーザーを「wheel」グループに所属させます。

```
# usermod -G wheel testuser
```

一般ユーザーにroot権限を与えるため、visudoコマンドで、/etc/sudoers を編集します。visudo コマンドは/etc/sudoers 編集専用のコマンドであり、間違った書き方で保存しようとした場合には、警告を出してくれるものです。

```
# visudo
```
visudoコマンドを入力してvimが立ち上がったら

```
## Allows people in group wheel to run all commands 
# %wheel ALL=(ALL) ALL 
```
を

```
## Allows people in group wheel to run all commands 
 %wheel ALL=(ALL) ALL
```
のように編集します（二行目先頭の#を外すだけです）。

###一般ユーザーがroot権限を持っている事を確認
編集が終わったら、一度ログアウトしてtestuserでログインします。

```
login as:testuser
testuser@***.**.**.***'s password:←testuserのパスワードを入力
```

sudoコマンドとsuコマンドが使える事を確認します。

```
$ sudo pwd
[sudo] password for testuser:←testuserのパスワードを入力
/home/testuser ←カレントディレクトリが表示されれば成功
```

```
$ su -
Password: ←rootのパスワードを入力
# ←「$」が「#」に変われば成功
```
どちらも問題なく入力できれば、設定変更は成功しています。

##rootでのログインを禁止する
###設定ファイルの編集
もうrootで直接ログインする必要はないので、rootでの直接ログインを禁止します。rootで直接ログインできなくするには、/etc/ssh/sshd_config を編集します。

```
# vim /etc/ssh/sshd_config
```

42行目付近

```
#PermitRootLogin yes
→PermitRootLogin no
```

###OSの再起動
設定ファイルの編集が終わったら、再起動を行います。

```
# service sshd restart
```

試しにrootでのログインに挑戦し、ログインできなければ設定は成功です。


##公開鍵認証方式でログインできるようにする
###秘密鍵と公開鍵の作成

まずPuTTYgen を起動します。 「PuTTY Key Generator」というウインドウが表示されるはずです。「SSH-2 RSA」がクリックされ、その右下に「2048」と入力されている事を確認したら、「Generate」をクリックして下さい。

![02.jpg](https://qiita-image-store.s3.amazonaws.com/0/93779/f99bbe97-a9db-11e9-c9d3-e82b13772e5b.jpeg)



マウスの動きで乱数生成を行うので，ウインドウ上で適当にマウス を動かしてください。

マウスを動かし続けると、新たにウインドウが表示されるはずです。ここでは、パスフレーズの入力を行い秘密鍵と公開鍵を作成し保存します。ウインドウの中央部分にある『Key passphrase』と『Confirm passphrase』に 同じパスフレーズを繰り返し入力します(ここで入力するパスフレーズは、rootや、上で作成したtestuserとは違うものです)。

![03.jpg](https://qiita-image-store.s3.amazonaws.com/0/93779/800025b4-4f28-5f4e-8fe2-0ed970e261b1.jpeg)




パスフレーズを入力したら、作成した鍵を保存します。『Save public key』(公開鍵)、『Save private key』 (秘密鍵) を順にクリックしてください。zipファイルを解凍して作成したフォルダ（pscp.exeがあるフォルダ）に、公開鍵を 「id_rsa.pub」、秘密鍵を 「id_rsa.ppk」という名前で保存します。保存が終わったら、PuTTYgen を終了します。

![04.jpg](https://qiita-image-store.s3.amazonaws.com/0/93779/f7637ca9-5096-96ae-bc67-39e5dc8f9bbc.jpeg)


###公開鍵をサーバーへ転送
公開鍵認証方式でログインできるようにするには、まず最初に公開鍵をサーバーへ転送する必要があります。
そのためにまず、コマンドプロンプトを立ち上げ、あなたがzipファイルを解凍して作成したフォルダ（「PSCP.EXE」があるフォルダ）へ移動します。次のコマンドの「C:\putty」の部分はあなたがzipファイルを解凍した場所に合わせて書き換えて下さい。

```
cd C:\putty
```

移動が成功したら、次のようにコマンドを入力します。ユーザー名を入力する部分では、上で作成した「testuser」を入力しています。

```
pscp id_rsa.pub testuser@サーバーのIPアドレス:id_rsa.pub
```

testuserのパスワードを入力するよう求められるので、それを入力します。
パスワードの入力に成功し、次のようなメッセージが表示されれば成功です。

```
id_rsa.pub   | 0 kB |   0.5 kB/s | ETA: 00:00:00 | 100%
```


###公開鍵をサーバーへ登録
公開鍵をサーバーへ転送できたら、次に公開鍵をサーバーへ登録します。公開鍵をサーバーへ登録するにはまず、PuTTYで公開鍵でログインできるようにしたいユーザー（今回の場合だとtestuser）でログインします。ログインが成功したら、以下の手順でコマンドを入力していく事で、公開鍵をサーバーへ登録できます。

・PuTTYgen で作成した公開鍵の形式を変換

```
ssh-keygen -i -f id_rsa.pub >> authorized_keys
```

・  ディレクトリ .ssh を作成

```
$ mkdir .ssh
```

・ディレクトリ .sshにアクセス権限を設定

```
$ chmod 700 .ssh
```

・公開鍵を.sshフォルダへコピー

```
$ mv authorized_keys .ssh
```

・ファイル「authorized_keys」に対するアクセス権限を設定

```
$ chmod 600 .ssh/authorized_keys
```

・変換前の公開鍵を削除

```
$ rm -f id_rsa.pub
```

###SSH接続の設定

・ログインしている一般ユーザを一時的に「root」に変更

```
$ su -
Password:←rootのパスワードを入力
```
・sshd_configファイルを編集

```
# vim /etc/ssh/sshd_config
```

セキュリティを高めるため、「sshd_config」を編集します。編集する内容は次の２つです。

①ポート番号の変更。コメントアウト「#」を削除し、任意のポート番号を入力する（今回は例として「2000」を指定する）。

13行目付近

```
#Port22 
→Port2000
```
 

②パスワード認証を無効にする。「yes」を「no」にする（間違えて少し上のコメント行を編集しないように注意）。

66行目付近

```
PasswordAuthentication yes 
→PasswordAuthentication no
```

・sshdを再起動

```
# service sshd restart
```

###公開鍵認証方式でのログイン

ここまでで、公開鍵認証方式でのログインをするための設定は終了です。
実際に公開鍵認証方式でログインをするためにはまず、PuTTYを起動し、ポート番号を上で変更した2000に設定します。

![05.jpg](https://qiita-image-store.s3.amazonaws.com/0/93779/03dcf8f0-895f-c1de-29bc-0cafa80f4e0d.jpeg)


ポート番号を変更したら次に、「Connection」→「SSH」→「Auth」と移動し、「Brouse」をクリックし、上で作成した秘密鍵を選択します。

![06.jpg](https://qiita-image-store.s3.amazonaws.com/0/93779/75c28285-4c84-22b1-6244-fad1e478065f.jpeg)


以上で公開鍵認証方式でログインするための設定は終了です。

最後に「Default Settings」を選択して「Save」をクリックして下さい。これをしておかないと、次回以降はまた設定が最初からになります。

![07.jpg](https://qiita-image-store.s3.amazonaws.com/0/93779/16d7f560-3a34-302b-22ad-1c4fa28d4e0b.jpeg)


「Open」をクリックするとまた「PuttY Security Alert」が立ち上がりますが、「はい」をクリックして問題ありません。

後は次のように入力すればログインできるはずです。

```
login as:testuser
Authenticating with public key "rsa-key-20150922"
Passphrase for key "rsa-key-20150922":←秘密鍵のパスフレーズを入力
```

##PuTTYのおすすめ設定
最後に、本記事タイトルとは関係ありませんが、PuTTYのおすすめ設定を書いておきます。

###おすすめ設定1

しばらくPuTTYを操作しないでいると、サーバーから接続が自動で切断されてしまうことがあります。次の様に30秒ごとにnullパケットを送る設定にしておくと、そのようなことがなくなります。

![08.jpg](https://qiita-image-store.s3.amazonaws.com/0/93779/6589a5e0-8e6f-fd2b-8ffd-e15b389b9a03.jpeg)


###おすすめ設定2

PuTTYでvimを開くと、見にくい配色になっているので、配色を変更します。

手順は次の通りです。

1・ regedit 起動

Winキー+R から「ファイル名を指定して実行」ダイアログを開き、「regedit」と入力して実行するとレジストリエディターが起動します。


2・ PuTTY の設定をエクスポート

PuTTYの設定がされている以下の項目を開きます。

HKEY_CURRENT_USER\Software\SimonTatham\PuTTY\Sessions\Default%20Settings
右クリックメニューからエクスポートで.regファイルに出力します。


3・ .regファイルの作成

出力した.regファイルをメモ帳で開き、以下の項目と内容を編集し保存します。

```
"Colour0"="240,240,240"
"Colour1"="255,255,255"
"Colour2"="40,40,40"
"Colour3"="20,20,20"
"Colour4"="20,20,20"
"Colour5"="255,255,255"
"Colour6"="20,20,20"
"Colour7"="20,20,20"
"Colour8"="192,80,77"
"Colour9"="192,80,77"
"Colour10"="155,187,89"
"Colour11"="155,187,89"
"Colour12"="247,150,70"
"Colour13"="247,150,70"
"Colour14"="79,129,189"
"Colour15"="79,129,189"
"Colour16"="128,100,162"
"Colour17"="128,100,162"
"Colour18"="75,172,198"
"Colour19"="75,172,198"
"Colour20"="240,240,240"
"Colour21"="255,255,255"
```
この配色はdid2さんが作成してくれたものです。
[情報科学屋さんを目指す人のメモ - 見やすくしたPuTTYの配色設定ファイルの中身を公開](http://did2.blog64.fc2.com/blog-entry-209.html)

4・ PuTTY の設定をインポート

作成した.regファイルをダブルクリックすれば実行されレジストリに反映されます。
PuTTYで新たにログインすれば、配色が変更されているはずです。