さくらVPSでCentOS7 ７．sftp接続

#はじめに

自由にテスト出来るLinuxのサーバーがほしくて、さくらVPSで構築してみました。
順次手順をアップしていく予定です。

今回は、sftpのインストール・設定をします。

#目次

1. [申し込み](https://qiita.com/Qsugi/items/9239f93f35967e567b5b)
2. [CentOS7インストール](https://qiita.com/Qsugi/items/4cc4ba9983191a306b19)
3. [SSH接続](https://qiita.com/Qsugi/items/45772c8a71a31bd0d3c8)
4. [Apache・PHPインストール](https://qiita.com/Qsugi/items/bf9740f31b4c42eaad91)
5. [MariaDBインストール](https://qiita.com/Qsugi/items/7798669338b555f4ea8d)
6. [FTP接続](https://qiita.com/Qsugi/items/6f383694f60913abb948)
7. sftp接続
8. [phpMyAdminインストール](https://qiita.com/Qsugi/items/8b6f5b457285140b2ca2)
9. [環境のバックアップ](https://qiita.com/Qsugi/items/a83076eb657157f12f17)
10. [Ruby On Railsインストール](https://qiita.com/Qsugi/items/c7e69a6761f125846bff)
11. [RailsプロジェクトをGitで共同開発](https://qiita.com/Qsugi/items/3c31cfeffee288c05d5e)

#sftp設定

sftpはSSHの仕組みを使用してファイルの受送信するプロトコルです。

接続アプリは[前回のFTP接続で使ったWinSCP](https://qiita.com/Qsugi/items/6f383694f60913abb948#winscpインストール)を利用します。

sftpは2種類のユーザ設定をしようと思います。

1. 一般作業用ユーザにsftp設定

    現在一般作業用ユーザは、sshでの接続と、sudoの特権レベルが使えるようにしてあります。このユーザにsftp設定をします。
<br>

2. sftp専用ユーザの設定

    sftpのみ利用できるユーザを作成します。
アクセスできるフォルダも、/var/www/以下のみに制限します。
<br>


|ユーザー|sshログイン|sudo権限|sftp|
|:---:|:---:|:---:|:---:|
|一般作業用|○|○|○|
|SFTP専用|×|×|○|

##一般作業用ユーザにsftp設定

SSHの設定は出来ていますので、WinSCPの設定だけで接続できます。

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

[SSH接続](https://qiita.com/Qsugi/items/45772c8a71a31bd0d3c8)時に作成した公開鍵と秘密鍵を使って接続します。
接続アプリは[前回のFTP接続で使ったWinSCP](https://qiita.com/Qsugi/items/6f383694f60913abb948#winscpインストール)を利用します。

* WinSCP起動

    <img src="https://qiita-image-store.s3.amazonaws.com/0/222823/34957af4-6629-a286-39e9-91cc6bd2a333.png" width=80>
<br>

* ログイン設定

    左側の「新しいサイト」を選択し、「セッション」を設定
転送プロトコル：SFTP
ホスト名： 153.126.209.124 ←ホストのIPアドレスまたはURL
ポート番号：2022 ←SSH接続設定時に変更したポート番号
ユーザ名：sakura
パスワード：（不要）
<img src="https://qiita-image-store.s3.amazonaws.com/0/222823/91a8f9a5-8fd6-69f7-cdc0-fc51a74578dd.jpeg" width=500>
<br>

* 秘密鍵の設定

    * パスワードの下の[設定(D)…]をクリックすると、下記のダイアログが開きます。

        <img src="https://qiita-image-store.s3.amazonaws.com/0/222823/b4b79f7d-a525-db3d-d3b4-d8ea4e24f994.jpeg" width=500>
<br>

    * 左側から「認証」を選択

        <img src="https://qiita-image-store.s3.amazonaws.com/0/222823/08ac5015-2b3c-9ee2-0f46-a23921964888.jpeg" width=500>
<br>

    * 秘密鍵のテキストボックス右端の[…]をクリックしてファイル選択ダイアログを開き、SSH接続設定時に作成した秘密鍵の保存されたフォルダを選択します。

        <img src="https://qiita-image-store.s3.amazonaws.com/0/222823/bedb31e9-f741-daac-f9ec-2a9a27ad4737.jpeg" width=500>
<br>

    * 選択するファイルの種類を「すべてのファイル(\*.*)」にすると、鍵ファイルが表示されますので、「id_rsa」ファイルを選択し、[開く(O)]をクリックします。

        <img src="https://qiita-image-store.s3.amazonaws.com/0/222823/e95e16b8-711d-0e6b-cb7f-b350cd2d498c.jpeg" width=545>
<br>

    * 「確認」ダイアログが表示されますので、[OK]をクリックします。

        <img src="https://qiita-image-store.s3.amazonaws.com/0/222823/3517fd3b-db11-543b-a9ef-370311103563.jpeg" width=500>
<br>

    * 「パスフレーズの入力」ダイアログが開きますので、SSH接続設定で公開鍵・秘密鍵を作成する時に設定した「鍵のパスフレーズ」を入力し[OK]をクリックします。

        <img src="https://qiita-image-store.s3.amazonaws.com/0/222823/12d15e4f-0321-d3b5-ee41-fac5824bbf6f.jpeg" width=280>
<br>

    * 「変換された秘密鍵を保存」ダイアログが開きますので[保存(S)]で保存し、表示された「情報」ダイアログで[OK]をクリックします。

        <img src="https://qiita-image-store.s3.amazonaws.com/0/222823/1316e16b-8f92-5877-6497-4d28d6d80841.jpeg" width=500>

        <img src="https://qiita-image-store.s3.amazonaws.com/0/222823/c21903a0-0964-4bc7-a52d-9c56c73fbc74.jpeg" width=500>
<br>

    * 秘密鍵のファイル名が設定されたことを確認して、[OK]をクリック。

        <img src="https://qiita-image-store.s3.amazonaws.com/0/222823/ee26bbc1-a72d-dc6c-61c3-8debe189d378.jpeg" width=500>
<br>

    * ログイン設定ダイアログに戻りますので[保存(S)]ボタンをクリックして保存します。

        <img src="https://qiita-image-store.s3.amazonaws.com/0/222823/3da6dfa9-d974-702f-b72e-72aa8bc6e66d.jpeg" wodth=300>
<br>


    * [ログイン]をクリック

        <img src="https://qiita-image-store.s3.amazonaws.com/0/222823/effc617b-3cfa-ff35-5d67-38512d15f4f4.jpeg" width=500>
<br>

    * 接続を確認

        <img src="https://qiita-image-store.s3.amazonaws.com/0/222823/df5f0f41-054f-0a49-72f8-88d21dfd75d3.jpeg" width=500>


##sftp専用ユーザの設定

###sftp専用ユーザ作成

* sftp専用ユーザ用グループ作成

    グループ名は「sftp_users」にします

    ```
$ sudo groupadd sftp_users
```

* sftp専用ユーザ作成

    ユーザ名は「sftp_only」にします

    ```
$ sudo useradd sftp_only
$ sudo passwd sftp_only
ユーザー sftp_only のパスワードを変更。
新しいパスワード: ←任意のパスワードを付ける
新しいパスワードを再入力してください: ←確認用パスワード入力
passwd: すべての認証トークンが正しく更新できました。
```

* ユーザをsftp専用グループに追加

    ```
$ sudo usermod -G sftp_users sftp_only
```

* ユーザを「webadmin」グループに追加

    「webadmin」グループは、[Apache・PHPインストール](https://qiita.com/Qsugi/items/bf9740f31b4c42eaad91)をした時に作成したグループで、「/var/www」にアクセスできるグループです。

    ```
$ sudo usermod -a -G webadmin sftp_only
```

    確認

    ```
$ groups sftp_only
sftp_only : sftp_only webadmin sftp_users
```

###sshd_config編集

* sftp専用ユーザに制限をかける為、sshd_configに設定を追加します。

    ```
$ sudo vi /etc/ssh/sshd_config
```

    ファイルの最後の方に以下の設定があります。

    ```config
# override default of no subsystems
Subsystem       sftp    /usr/libexec/openssh/sftp-server
#
# Example of overriding settings on a per-user basis
#Match User anoncvs
#       X11Forwarding no
#       AllowTcpForwarding no
#       PermitTTY no
#       ForceCommand cvs server
```

    これを、次のように変更します。

    ```config
# override default of no subsystems
#Subsystem      sftp    /usr/libexec/openssh/sftp-server
Subsystem       sftp    internal-sftp
#
# Chroot
# マッチしたユーザー（グループ）に以下のルールを適用
# sftp_usersグループのみルールを適用
Match group sftp_users
# ルートディレクトリの設定
ChrootDirectory /var/www
X11Forwarding no
AllowTcpForwarding no
# 実行プログラム指定
ForceCommand internal-sftp
```

* SSH接続設定の再読み込み

    ```
$ sudo systemctl restart sshd
```

* SSH接続の動作確認

    ```
$ sudo systemctl status sshd
● sshd.service - OpenSSH server daemon
   Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled; vendor preset: enabled)
   Active: active (running) since 水 2018-05-02 13:02:38 JST; 3s ago
     Docs: man:sshd(8)
           man:sshd_config(5)
 Main PID: 10267 (sshd)
   CGroup: /system.slice/sshd.service
           mq10267 /usr/sbin/sshd -D
 5月 02 13:02:38 ik1-340-30370.vs.sakura.ne.jp systemd[1]: Starting OpenSSH ...
 5月 02 13:02:38 ik1-340-30370.vs.sakura.ne.jp sshd[10267]: Server listening...
 5月 02 13:02:38 ik1-340-30370.vs.sakura.ne.jp systemd[1]: Started OpenSSH s...
Hint: Some lines were ellipsized, use -l to show in full.
```

###公開鍵・秘密鍵の作成

* [「３．SSH接続」の「鍵認証の為の公開鍵と秘密鍵を作成」](https://qiita.com/Qsugi/items/45772c8a71a31bd0d3c8#鍵認証の為の公開鍵と秘密鍵を作成)と同様にTeraTermを使用して鍵を作成します。

    ※WinSCPでも鍵は作れるのですが、なぜか認証がうまくいかなかったので、TeraTermで鍵を作成しました。

###公開鍵のアップ

公開鍵をユーザのフォルダにアップします。

* アップする場所を作成

    ```
$ sudo mkdir /home/sftp_only/.ssh
$ sudo chmod 700 /home/sftp_only/.ssh
$ sudo chown -R sftp_only:sftp_only /home/sftp_only/.ssh
```

* 公開鍵をアップ

    公開鍵をドラッグ＆ドロップ

    <img src="https://qiita-image-store.s3.amazonaws.com/0/222823/fa1e5dfb-0954-7c6b-7b7e-dfb69acb9735.jpeg" width=500>

    SCPに「~/」を入力して[SCP]をクリック

    <img src="https://qiita-image-store.s3.amazonaws.com/0/222823/c3d0dda8-f421-d4ad-3f56-b42559ffa2c7.jpeg" width=300>
<br>


* アップしたファイルをリネーム

    ```
$ sudo mv ~/id_rsa.pub /home/sftp_only/.ssh/authorized_keys
$ sudo chmod 600 /home/sftp_only/.ssh/authorized_keys
$ sudo chown -R sftp_only:sftp_only /home/sftp_only/.ssh/authorized_keys
```

    確認

    ```
$ sudo ls -la /home/sftp_only/.ssh
合計 4
drwx------ 2 sftp_only sftp_only  28  5月  2 13:44 .
drwx------ 3 sftp_only sftp_only  70  5月  2 13:32 ..
-rw------- 1 sftp_only sftp_only 396  5月  2 13:28 authorized_keys
```

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

* WinSCP起動

    <img src="https://qiita-image-store.s3.amazonaws.com/0/222823/34957af4-6629-a286-39e9-91cc6bd2a333.png" width=80>
<br>

* ログイン設定

    右側の「新しいサイト」を選択し、「セッション」を設定
転送プロトコル：SFTP
ホスト名： 153.126.209.124 ←ホストのIPアドレスまたはURL
ポート番号：2022 ←SSH接続設定時に変更したポート番号
ユーザ名：ftp_only
パスワード：（不要）
<img src="https://qiita-image-store.s3.amazonaws.com/0/222823/e4e2630d-f18f-3eaa-7cc3-122a80e5f884.jpeg" width=500>
<br>

* 秘密鍵の設定

    * パスワードの下の[設定(D)…]をクリックすると、下記のダイアログが開きます。

        <img src="https://qiita-image-store.s3.amazonaws.com/0/222823/b4b79f7d-a525-db3d-d3b4-d8ea4e24f994.jpeg" width=500>
<br>

    * 左側から「認証」を選択

        <img src="https://qiita-image-store.s3.amazonaws.com/0/222823/08ac5015-2b3c-9ee2-0f46-a23921964888.jpeg" width=500>
<br>

    * 秘密鍵のテキストボックス右端の[…]をクリックしてファイル選択ダイアログを開き、SSH接続設定時に作成した秘密鍵の保存されたフォルダを選択します。

        <img src="https://qiita-image-store.s3.amazonaws.com/0/222823/9842d6b9-c51d-2b22-ea65-d02dc1bf18b9.jpeg" width=500>
<br>

    * 選択するファイルの種類を「すべてのファイル(*.*)」にすると、鍵ファイルが表示されますので、「d_rsa」ファイルを選択し、[開く(O)]をクリックします。

        <img src="https://qiita-image-store.s3.amazonaws.com/0/222823/9b5934ae-e249-94c8-f3f7-176be4c2a047.jpeg" width=545>
<br>

    * 「確認」ダイアログが表示されますので、[OK]をクリックします。

        <img src="https://qiita-image-store.s3.amazonaws.com/0/222823/3f9005ba-942c-1c76-95c0-eb7009be6dc3.jpeg" width=500>
<br>

    * 「パスフレーズの入力」ダイアログが開きますので、SSH接続設定で公開鍵・秘密鍵を作成する時に設定した「鍵のパスフレーズ」を入力し[OK]をクリックします。

        <img src="https://qiita-image-store.s3.amazonaws.com/0/222823/12d15e4f-0321-d3b5-ee41-fac5824bbf6f.jpeg" width=280>
<br>

    * 「変換された秘密鍵を保存」ダイアログが開きますので[保存(S)]で保存し、表示された「情報」ダイアログで[OK]をクリックします。

        <img src="https://qiita-image-store.s3.amazonaws.com/0/222823/1729dde1-42df-d21f-256e-cda808122106.jpeg" whdth=500>

        <img src="https://qiita-image-store.s3.amazonaws.com/0/222823/1c8e0ec4-885e-f3e6-b0ba-2cec0af8ba06.jpeg" width=400>
<br>

    * 秘密鍵のファイル名が設定されたことを確認して、[OK]をクリック。

        <img src="https://qiita-image-store.s3.amazonaws.com/0/222823/41c4f015-6b58-e240-a6a0-48339d72b030.jpeg" width=500>
<br>

    * ログイン設定ダイアログに戻りますので[保存(S)]ボタンをクリックして保存します。

        <img src="https://qiita-image-store.s3.amazonaws.com/0/222823/e03e8fdf-79dd-a8eb-83b2-53d200112fbd.jpeg" width=300>
<br>

    * [ログイン]をクリック。

        <img src="https://qiita-image-store.s3.amazonaws.com/0/222823/e5b60693-0716-6884-ffed-f348e64847d3.jpeg" width=500>
<br>

    * 接続を確認。

        フォルダが/wwwになっていて、そこから上には行けないことを確認。
<img src="https://qiita-image-store.s3.amazonaws.com/0/222823/b8bdd85a-b19e-46fe-48de-2c31b080631b.jpeg" width=500>
<br>

##WinSCP自動接続

パスフレーズをスキップするための設定です。
WinSCPに付属の「pageant.exe」を利用します。

* 起動

    WinSCPがインストールされているフォルダの「PuTTY」フォルダにある「pageant.exe」を起動します。

    ```
C:\Program Files (x86)\WinSCP\PuTTY\pagent.exe
```

    ツールバーにアイコンが表示されます。
<img src="https://qiita-image-store.s3.amazonaws.com/0/222823/8121c701-45c5-e4fd-87b2-11654c1feea2.jpeg" width=100>

    ダブルクリックするとダイアログが開きます。
<img src="https://qiita-image-store.s3.amazonaws.com/0/222823/02bac627-2ae1-a71e-c58f-631e1f666c36.jpeg" width=400>
<br>

* 鍵とパスフレーズを登録

    [AddKey]をクリックし、秘密鍵を選択
<img src="https://qiita-image-store.s3.amazonaws.com/0/222823/afeee0a1-c4bc-9b9c-8862-a928eca9f329.jpeg" width=500>

    ダイアログが開くので、パスフレーズを入力
<img src="https://qiita-image-store.s3.amazonaws.com/0/222823/85f11c61-4f8e-5875-263d-f5328ba27def.jpeg" width=200>

    以上で登録完了です。
<img src="https://qiita-image-store.s3.amazonaws.com/0/222823/5345b800-c89a-f8d4-9585-98aa24079dd9.jpeg" width=500>
<br>

* WinSCPでパスフレーズ無しで接続できることを確認します。

#次回

sftpの設定が完了しました。
次回は、phpMyAdminをインストールします。


前回：[FTP接続](https://qiita.com/Qsugi/items/6f383694f60913abb948)
次回：8. [phpMyAdminインストール](https://qiita.com/Qsugi/items/8b6f5b457285140b2ca2)