ConoHa VPSでサーバ構築 〜コマンドでのログイン認証まで

##はじめに
サイトを作成するに当たってConoHaのサーバー構築で躓いたので
今後、ConoHa使って何かしようとされているビギナー様にお役に立てば良いなと思いまとめを書きました。
至らない点があればご指摘お願い致します。

▼注意
・埋め込みコードの`vps`と表示してあるのはssh接続時の操作
・逆に記載していない場合はローカルでの操作になります

####環境
ConoHa VPS
OS CentOS 7.6

#ターミナルからConoHaのサーバに接続する

```terminal
$ ssh root@xxx.xx.xx.xx
```
`xxx.xx~`にはConoHaのネットワーク情報に記載されているIPアドレスを入力してください

`Password:`と表示されたらConoHaのサーバー追加時に設定したパスワードを入力し、
`[root@xxx.xx.xx.xx ~]`と表示されればサーバでの接続完了です。

#一般ユーザの作成
```terminal:vps
$ useradd [ユーザ名]
```
ユーザ名は好きな名前を入力してください。
次にユーザにログインするパスワードを設定します。

```terminal:vps
$ passwd [ユーザ名]
```

###▼なぜ一般ユーザーを作成するのか
一般ユーザを作成する理由としては最初に接続したrootユーザは権限に縛りがないので、ファイルの編集や削除など全ての操作が可能となります。
消してはいけないファイルシステムの削除やrootユーザ乗っ取り防止するなどセキュリティ面を強化するためにも一般ユーザの作成はマストとなります。

#一般ユーザにsudoコマンドを付与する
```terminal:vps
$ gpasswd -a [ユーザ名] wheel
```
ユーザをwheelグループに追加します。
ユーザ名の所属先がwheelになっていることを確認します。

```terminal:vps
$ groups [ユーザ名]
[ユーザ名]:[ユーザ名] wheel
```
ユーザ名の後ろがwheelで返ってくれば問題ないです。

```terminal:vps
$ groups [ユーザ名]
[ユーザ名]:[ユーザ名] wheel
```


一般ユーザでログインできるかを確認します。

```terminal:vps
[root@xxx.xx.xx.xx ~]# su [ユーザ名]
[ユーザ名@xxx.xx.xx.xx root]$
```
rootの部分がユーザ名に切り替われば一般ユーザでの接続成功です。
これからの操作はrootユーザではなく一般ユーザで進めます。


#SSH設定を鍵認証方式に切り替える
現在はSSH認証がパスワード認証となっておりますが、セキュリティ向上の為鍵認証による暗号方式に切り替えます。
流れとしては、
1.ローカルで公開鍵と秘密鍵を生成
2.サーバ側のSSH設定ファイルを編集
3.公開鍵をサーバ側にアップロードする


###1.ローカルで鍵を生成する

```terminal
#.sshの階層まで移動
$ cd .ssh
#公開鍵/秘密鍵を生成
$ssh-keygen -t rsa -b 2048
Generating public/private rsa key pair.
Enter file in which to save the key (/.../.ssh/id_rsa): [鍵の作成箇所と名前を指定]
Enter passphrase (empty for no passphrase): 　[任意のパスフレーズの任意入力]
Enter same passphrase again: 　[もう一度パスフレーズの入力]
Your identification has been saved in /.../.ssh/id_rsa.
Your public key has been saved in /.../.ssh/id_rsa.pub.
The key fingerprint is:
+---[RSA 2048]---+
randomart
+---[SHAxxx]-----+
```
※`Enter file in which to save the key`の後に入力する鍵の名前の指定は自由にしていただいて結構ですが、例としてconohaで進めます。
`The key fingerprint is:`の後にランダムポート（文字列）が表示されていれば鍵の生成成功です。

```terminal
#鍵の生成を確認
$ ls
conoha	 conoha.pub  known_hosts
```
conoha :秘密鍵
conoha.pub :公開鍵

###2.サーバ側のSSH設定ファイルを編集

```terminal:vps
$ mkdir .ssh
$ chmod 700 .ssh
```


```terminal:vps
$ sudo vim /etc/ssh/sshd_config
```
sshd_configファイルをvimで起動します

```vim:/etc/ssh/sshd_config

#公開鍵認証を許可
PubkeyAuthentication yes

#RSA認証を許可（なければ不要）
RSAAuthentication yes

#VPS公開鍵の保存場所(CentOSではデフォルトでコメントあるとしているので変更不要)
AuthorizedKeysFile      .ssh/authorized_keys
```
上記の箇所をコメントアウトしたり、書き換えてください。
編集が完了したら、escキーを押した後`:wq`と入力して保存+終了が出来ます。

```terminal:vps
$ sudo systemctl restart sshd.service
```
上記コマンドで変更した内容を反映します。

###3.公開鍵をサーバ側にアップロードする

```terminal
$ scp conoha.pub [一般ユーザ名]@xxx.xx.xx.xx:~/.ssh/authorized_keys
[ユーザ名]@xxx.xx.xx.xx's password: 
conoha.pub                                      100%  ...    ...KB/s   00:00
```

##コマンドでssh接続出来るように設定する

sshログイン時に`ssh user@xxx.xx.xx.xx`を入力するのは面倒なので、
コマンド実行でsshへ接続できるように設定します。

```terminal
$ vim .ssh/config
```

新しくconfigファイルが作成されvimが起動します。
以下のように編集してください。

```terminal:/.ssh/config
Host conoha #sshログインに使用する任意の名前を入力
     HostName xxx.xx.xx.xx #VPSサーバのIPアドレスを入力
     Port 22
     User [ユーザ名]
     IdentityFile ~/.ssh/conoha #ローカルの秘密鍵の階層
```

```terminal
$ ssh conoha
```
`/.ssh/config`で設定したHostの後ろの部分だけでログインが可能になれば設定完了です。