CentOS7:SFTP接続・設定のやり方

CentOS7でSFTPサーバーを構築し、安全なファイル転送を行う方法をまとめています。

データを暗号化しないで送ることは、できれば避けたいですよね(・ω・)ノ

WindowsでSFTP接続するためにWinSCPを使用します。

SFTPについて

SFTP接続に関しての備忘録です。

そもそもSFTPとは何なのか...

SFTP(SSH File Transfer Protocol)

ざっくり簡単にまとめると...

「FTPとは違って、データファイルが安全な壁で守られる」ってことですかね...(のnの)

SSHのサブシステムとして動作するようなので、sshdは動いていることが条件です。

tera termを利用してですが、SSH接続についての備忘録もあります。

今回やることは、

  • Windows8.1よりWinSCPを利用し、SFTP接続をする。
  • CentOS7で、chroot環境+sftp専用のグループを作成する。

目次へ

WinSCPの設定

Windows8.1よりSFTP接続するために、まずはWinSCPをインストールします。

WinSCPは、MS-Windows上で動くGUIのFTP、FTPS、SFTPクライアントプログラムらしい。

なんのこっちゃ(・ω・')

ダウンロード

WinSCP download pageへアクセスし、「Installation package」をクリックすると、
     日本語版のWinSCPがダウンロードできる。

epNote

目次へ

インストール

ダウンロードしたファイル「WinSCP-5.9.6-Setup.exe」を実行し、インストールしていく。
     警告がでるけど無視して「実行」を選択

epNote

使用許諾契約書の同意が求められるので、特に問題なければ「承諾」を選択

epNote

標準的なインストールを選択して、「次へ」

epNote

コマンダーを選択して、「次へ」

epNote

問題なければ「インストール」を選択

epNote

インストールが終わるので「完了」
     寄付はお好みで(・ω・')

epNote

目次へ

puttygenで鍵のペアを作成

WinSCPでSSH接続するために、付属の「puttygen」さんで鍵ペアを作成する。

WinSCPをインストールしたフォルダに「PuTTY」フォルダがあるので、中にいる。

起動したら、「Generate」を選択して、鍵ペアを作る。

epNote

緑の枠の中で、マウスをぐるぐる動かすとゲージが増え、マックスになったら鍵が生成される。
      最初知らなくてビビったことの一つ(のsの)ノノ

epNote

「key comment(任意)」、「key passphrase(任意)」を入力したら
      「Save public key」で公開鍵、「Save private key」で秘密鍵をそれぞれ保存する。
      ここでは、公開鍵を「public_key.pub」、秘密鍵を「private_key.ppk」として保存した。

epNote

目次へ

chroot環境+SFTP専用のグループ作成

SFTP専用のグループとユーザーの作成

グループ作成

    groupadd sftp_users

ユーザー作成

    useradd sftp_only
    passwd sftp_only
    usermod -G sftp_users sftp_only

目次へ

SSH公開鍵認証設定

サーバーに公開鍵を設置と同様(作成したユーザーに置き換える)

目次へ

SFTPで利用するディレクトリ設定

アクセスするフォルダと実際に操作できるフォルダを設定

    chmod 755 /home/sftp_only/    # アクセス先のフォルダ設定
    chown root:root /home/sftp_only/    # chrootにするため権限をrootに変更
    mkdir /home/sftp_only/files/
    chmod 755 /home/sftp_only/files/    # 実際に操作できるフォルダ
    chown sftp_only:sftp_users /home/sftp_only/files/

Configファイルの変更

    vi /etc/ssh/sshd_config
       # 標準のsftpサーバからinternal-sftpに変更する
      # Subsystem       sftp    /usr/libexec/openssh/sftp-server
      Subsystem       sftp    internal-sftp
      # 接続ユーザーのグループが[sftp_users]だった場合、chrootの設定とSFTPの指定
      Match Group sftp_users
        X11Forwarding no
        AllowTcpForwarding no
        ChrootDirectory /home/sftp_only
        ForceCommand internal-sftp

設定を反映するためsshd再起動

    systemctl restart sshd

目次へ

WinSCPでSFTP接続

インストールしたWinSCPを起動し、「設定」を選択

epNote

「認証」>「認証条件」のところで、puttygenで鍵のペアを作成にて作成した秘密鍵を指定し、
      「OK」を選択

epNote

ホスト名、ユーザー名、パスワードを入力して「保存」を選択

epNote

セッション名を好きにつけて「OK」を選択
      ここではセッション名をdefaultとした。

epNote

保存したセッション名を指定した状態で、「ログイン」を選択

epNote

初回は警告が表示されるが、無視して「はい」を選択

epNote

問題なくSFTP接続できれば完了

epNote

目次へ

その他

他に記載しておきたいことをまとめていきます。

Authorized_keysに複数の公開鍵を設定

今回、tera termとWinSCPを利用していて、それぞれ公開鍵と秘密鍵が異なるので、

いちいち入れ替えて接続していた。

切り替えがめんどいので、試しにサーバー上のAuthorized_keysに2つの公開鍵を追記したところ...
  うまく機能した(-ω-;)

    cat 追記したい公開鍵  >>  Authorized_keys

keysってそういうことなのかしら...

目次へ

WinSCPでログ確認

WinSCPにてSFTP接続時にエラーが発生する場合、やはりログを確認するのが手っ取り早い。

WinSCPを起動し、「ツール」から「環境設定」を選択

epNote

「ログ」>「ログのオプション」にて「有効にするテキストログのレベル」にチェックする。

epNote

これでログの出力がされるようになった。上記画面の状態では、ログファイルは、
  「C:⁄Users⁄ユーザー名⁄AppData⁄Local⁄Temp」に作成される。

目次へ

作成日:2017/07/09
更新日:2018/08/16