3
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

GCPでFTPサーバーの環境構築をしてみたので備忘録

Last updated at Posted at 2021-01-23

構築環境(GCPの無料枠で構成)

  • VMインスタンス構成
    汎用
    N1シリーズ
    マシンタイプ: f1-micro
    ブートディスク: OS CentOS7
    HDD 30GB

作業内容

  • GoogleCloudPlatform(以下GCP)のアカウントを作成
  • GCPでプロジェクト作成
  • ComputeEngine でVMインスタンスを作成
  • VMインスタンス上にFTPサーバ(vsftpd)のインストール
  • VMインスタンス上のFTPサーバ(vsftpd)の設定ファイル編集
  • vsftpdのサービスを起動
  • GCPのVPCネットワークでファイアウォールの設定
  • ファイアウォールの設定をVMインスタンスに割り当てる
  • PCからFFFTPで接続テスト

GoogleCloudPlatform(以下GCP)のアカウントを作成

  • gmailアカウントを作成して、chromeブラウザ等でアカウントにログインする

GCPでプロジェクト作成

  • 適当な名前でプロジェクトを作成する

ComputeEngine でVMインスタンスを作成

  • 左上の [三] のメニューから ComputeEngine を選択
  • VMインスタンスを選択
  • 画面上の作成ボタンを押下して、インスタンスの構成を選択して作成する

マシン構成
汎用: N1シリーズ, f1-micro
ブートディスク: OS: CentOS 7, 永続30GB

上記構成で作成

VMインスタンス上にFTPサーバ(vsftpd)のインストール

  • GCPのVMインスタンス ページの作成済みインスタンスの項目にある接続から、ブラウザウィンドウで開く を選択しVMインスタンスに接続する
  • Linuxとか、Unixとかの黒画面が出てくるのでコマンドで操作する
  • gmailアカウントのユーザー名部( xxxxx @gmail.comの@の左部)で、ユーザーが自動で登録されてるぽい
    ftpuser @gmail.com でアカウントを作成したと仮定しておく

黒画面でコマンドを入力

とりあえず、スーパーユーザーにする

sudo -s

ユーザーにパスワードを設定する

passwd ftpuser
# と打ち込むと、ftpuser に対して、
# 設定するパスワードの入力を求められるので入力してEnter
Changing password for user ftpuser.
New password:
# と入力を求められるので、パスワードを入力
# 打ち込んだ文字列は表示されない
Retype new password:
# 入力確認されるので、設定したパスワードを入力してEnter
# 設定と確認で入力したパスワードが一致してれば、

passwd: all authentication tokens updated successfully.
# と出れば、設定完了
# ここで設定したパスワードは、最後のFFFTP で使用する

vsftpd をインストールする

yum install vsftpd

/etc/vsftpd にインストールされる

vsftpd.conf の設定ファイルをviエディタで調整する

vi /etc/vsftpd/vsftpd.conf

これで、VIエディタで vsftpd.conf のファイルをオープンした状態

anonymous_enable=YES
↓
anonymous_enable=NO
dirmessage_enable=YES
↓
dirmessage_enable=NO
#ascii_upload_enable=YES
#ascii_download_enable=YES
↓
ascii_upload_enable=YES
ascii_download_enable=YES
listen=NO
listen_ipv6=YES
↓
listen=YES
listen_ipv6=NO

最下部に加筆する

userlist_deny=NO
userlist_file=/etc/vsftpd/user_list
# userlist_deny=NO にすることで、user_list に指定されてるユーザーのみアクセスを許可するようになるらしい

use_localtime=YES

pasv_enable=YES
pasv_promiscuous=NO
pasv_min_port=61000
pasv_max_port=61010
pasv_address=xxx.xxx.xxx.xxx 
# pasv_enable でFTPのパッシブモードを有効にする
# pasv_min_port, pasv_max_port は、データ転送で使うポートの範囲を指定する
# pasv_address は GCPのVMインスタンスのグローバルIPを指定する

listen_port=61234

  • 編集が終わったら保存して閉じる

/etc/vsftpd/user_list を編集

ファイルの存在を確認するためにコマンド ペシッ!

ls /etc/vsftpd

user_list がリストアップされたら、存在してるけど
ない場合は以下コマンドを使ってファイルを作る

#作る
touch /etc/vsftpd/user_list
#編集する
vi /etc/vsftpd/user_list
# ftpuser だけ記載して、あとは削除して保存
ftpuser

vsftpdのサービスを起動

# 自動起動の設定をしておく
systemctl enable vsftpd

# 手動で起動する
systemctl start vsftpd

# 起動確認する
systemctl status vsftpd

GCPのVPCネットワークでファイアウォールの設定

  • GCPのほうに戻って上部メニューの[三]から、VPCネットワークへ移動
  • ファイアウォールに移動
  • 上部のファイアウォールルールを作成で、ルールを追加(上り/下りで2件追加する)

上りの設定

  • 名前は任意、とりあえず use-ftp-up とかで作る
  • トラフィックの方向を上りを選択
  • ターゲットの項目で、タグをつける:例 use-ftp-up
  • プロトコルとポートで、指定したプロトコルポートで20-21と
    vsftpd.confで指定した
    pasv_min_port,pasv_max_portの範囲を指定する( 61000-60010 )
    vsftpd.confでlisten_portで設定したポート番号も設定する( 例: 61234 )

下りの設定

  • 名前は任意、とりあえず use-ftp-dl とかで作る
  • トラフィックの方向を下りを選択
  • ターゲットの項目で、タグをつける:例 use-ftp-dl
  • プロトコルとポートで、指定したプロトコルポートで
    vsftpd.confで指定した
    pasv_min_port,pasv_max_portの範囲を指定する( 61000-60010 )

ファイアウォールの設定をVMインスタンスに割り当てる

  • GCPのComputeEngine でVMインスタンスを選択
  • 上部メニューから、編集を行う
  • 設定の中間あたりの位置にある、ネットワークタグに先ほど作ったファイアウォールルールのタグを設定する
    use-ftp-upとuse-ftp-dl

PCからFFFTPで接続テスト

  • FFFTPのホスト名に、VMインスタンスのグローバルIPを設定
  • ユーザー名に、作ったユーザー名を設定( 例:ftpuser )
  • VMインスタンス側で設定した、ftpuserのパスワードを指定する
  • 拡張タブのポート番号を、vsftpd.confで設定したポート番号にする(例:61234)

上り下りとも転送できることを確認したら

  • VMインスタンスは削除
3
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?