こんにちは。
業務アプリの運用保守をしている社会人4年目のSEです。
最近業務でよく”FTP”という単語を聞くようになりました。
今回自分の環境でFTP通信をやってみて勉強しようと思います。
アウトプットと備忘も兼ねてQiita初投稿です!(^^)!
0.環境情報
名前 | 説明 |
---|---|
クライアント側 | Windows10 |
サーバー側 | Linux CentOS 7(Oracle VirtualBoxで立てた仮想マシン) |
1.vsftpd(FTPサーバー)をインストール
まずはLinux側でFTP通信を受け付ける“受付窓口”をつくります。
sudo yum install -y vsftpd
2.vsftpd を起動&自動起動設定
次にインストールしたFTPサーバを起動しておきます。
sudo systemctl start vsftpd
sudo systemctl enable vsftpd
3.FirewallでFTPポート(21番)を許可
FTPでは21番ポートを利用します。
※厳密には制御用コネクションで21番ポート、データ転送用のコネクションで20番ポートを利用します。FTPは制御用と、転送用の2本で接続するらしいです。
別にする理由は、ファイル転送中にキャンセルなどをする際に、制御用からキャンセルさせる事ができ、使い勝手がいいそう。(あまりピンとは来ないが一旦受け入れる・・)
sudo firewall-cmd --permanent --add-service=ftp
sudo firewall-cmd --reload
4.SELinuxの設定(必要な場合)
CentOS 7 ではSELinuxの制限でFTPが使えないことがあるぽいです。
次のコマンドで許可しておきます。
sudo setsebool -P ftpd_full_access on
5.FTP用のユーザーを作成(例:ftpuser)
クライアント側からFTP接続する時用に、ログインユーザを作っておきます。
名前は任意で適当に。
sudo useradd ftpuser
sudo passwd ftpuser
ホームディレクトリにファイルを置けるようにします(任意)
sudo mkdir /home/ftpuser/ftpfiles
sudo chown ftpuser:ftpuser /home/ftpuser/ftpfiles
6.vsftpd設定ファイルの編集(必要に応じて)
お好みで、設定ファイルをいじっておきます。
設定ファイルの場所:
/etc/vsftpd/vsftpd.conf
最小限の設定変更例:
anonymous_enable=NO # 匿名ログインを禁止
local_enable=YES # ローカルユーザーのログインを許可
write_enable=YES # 書き込みを許可
chroot_local_user=YES # ユーザーをホームディレクトリに閉じ込める
編集後は保存して、vsftpdを再起動:
sudo systemctl restart vsftpd
サーバのコマンドライン上でファイルを編集するには、
viやvimなどを使ってみましょう。
↓適用に「vi」で検索したらヒットしたので記事貼っておきます。
7.Windowsからアクセス
LinuxのIPアドレスを確認します。
ip addr
ただし、VirtualBoxで仮想マシンを起動すると、デフォルトではNAT接続になっていて、この場合 WindowsからはこのIPに直接アクセスできないようでした。
そこで、chatGPTに聞いてみると、ホストオンリーアダプターへ切り替えたらいいとのことです。
▼手順
①VirtualBoxの仮想マシンをシャットダウンする
②VirtualBoxマネージャーでその仮想マシンを選択 → 設定 → [ネットワーク]
③「アダプター2」を有効にする(チェック入れる)
④「割り当て(接続先)」で、「ホストオンリーアダプター」 を選択
⑤「OK」で設定を保存し、仮想マシンを起動して、再度 ip addr を実行
⑥192.168.xx.xx のような別のIPアドレスが表示されるはず
→ それをWindowsから使って ftp://192.168.xx.xx でアクセスできます。
Windowsコマンドプロンプトでpingテストします。
※IPアドレスは自分のものに書き換えてください。以下はあくまで例。
ping 192.168.56.101
8.FTP接続を試みる
OKなら、FTP接続してみましょう。
ftp 192.168.56.101
作成したftpuserでログイン。
するとログイン成功と出てきます。
アップロード元のディレクトリを確認・変更(必要に応じて):
lcd C:\Users\YourName\Desktop
9.いざ。PUT!
ついに!PUTします!(今回は用意したテスト用のテキストファイルを送ってみます)
put ftptest.txt
結果・・・。
無事転送成功しました~~!
今後少しずつ遊んでみてFTPについてはもう少し学んでみようかなーとおもいます。
何事もまず触ってみるべし!(^^)!