终端版本
Distributor ID: Ubuntu
Description: Ubuntu 22.04.2 LTS
Release: 22.04
Codename: jammy
2
3
4
5
# 前言
服务器与开发环境文件传输是常规操作了,随着 Window 对 Linux 的支持越来越密切,熟悉 WSL 是刻不容缓的事情,那么现在就来搭建个 FTP 吧。
# 安装 vsftpd
sudo apt install vsftpd
# 配置 vsftpd
接着在修改配置文件为如下,保持退出即可。
vim /etc/vsftpd.conf
listen=NO
listen_ipv6=YES
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
connect_from_port_20=YES
chroot_local_user=YES
secure_chroot_dir=/var/run/vsftpd/empty
pam_service_name=vsftpd
rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
ssl_enable=NO
pasv_enable=Yes
pasv_min_port=10000
pasv_max_port=10100
allow_writeable_chroot=YES
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
现在已经安装配置好 ftp 啦。
因为 Ubuntu 的内置防火墙默认情况下是阻止 FTP 通信的,但通过下面的命令可以在 UFW 中创建一个异常以允许流量:接着可以修改防火墙规则,如下:
sudo ufw allow from any to any port 20,21,10000:10100 proto tcp
接着重启 vsftp 来加载信配置
sudo service vsftpd restart
后面如果每次启动 wsl 都要重新使用命令 service vsftpd start 来启动 ftp 服务,systemctl 命令在 wsl 中用不了,所以只能用 service 命令来每次都启动了。
# 创建用于 ftp 访问的用户
上面已经将 ftp 所有工作都完成了,但是如果想在其他终端访问该 ftp 的话当然还需要一个账号密码来实现终端间的沟通吧。
所以下面我们需要在 Linux 上创建一个新用户,用于 ftp 使用。
sudo useradd -m ftptest
sudo passwd ftptest
# 然后输入密码
New password:
Retype new password:
passwd: password updated successfully
2
3
4
5
6
接下来验证下用户创建是否成功,所以在 ftptest 文件夹下创建一个文件 FTP-TEST,当使用 ftp 登录到 ftptest 时可见 d 到该文件。
sudo bash -c "echo FTP TESTING > /home/ftptest/FTP-TEST"
然后在 Linux 上连接 FTP 服务器
root@LAPTOP-PN3TTOB5:~# ftp 127.0.0.1
Connected to 172.29.xx.yy.
220 (vsFTPd 3.0.5)
Name (172.29.xx.yy:root): ftptest
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls
229 Entering Extended Passive Mode (|||10086|)
150 Here comes the directory listing.
-rw-r--r-- 1 0 0 12 Dec 11 23:20 FTP-TEST
226 Directory send OK.
ftp>
2
3
4
5
6
7
8
9
10
11
12
13
14
15
可见,输入 ls 命令 即可返回:FTP-TEST
# 获取 Linux IP 的方法
也可以使用 Linux 实际 IP 来访问
获取 Linux 当前 IP 地址方式如下:
eth0 为 Linux 的 IP
# 方法一:
root@LAPTOP-PN3TTOB5:~# ip addr show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 00:15:5d:9e:14:4c brd ff:ff:ff:ff:ff:ff
inet 172.29.xx.yy/20 brd 172.29.31.255 scope global eth0
valid_lft forever preferred_lft forever
inet6 fe80::215:5dff:fe9e:144c/64 scope link
valid_lft forever preferred_lft forever
# 方法二:
root@LAPTOP-PN3TTOB5:~# ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 172.29.xx.yy netmask 255.255.240.0 broadcast 172.29.31.255
inet6 fe80::215:5dff:fe9e:144c prefixlen 64 scopeid 0x20<link>
ether 00:15:5d:9e:14:4c txqueuelen 1000 (Ethernet)
RX packets 15313 bytes 36004054 (36.0 MB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 7839 bytes 713823 (713.8 KB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (Local Loopback)
RX packets 67 bytes 3986 (3.9 KB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 67 bytes 3986 (3.9 KB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
# 方法三:
root@LAPTOP-PN3TTOB5:~# hostname -I
172.29.xx.yy
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# Window FTP 连接 Linux
一切准备就绪,接下来就可以在 Window 使用 FTP 软件与 Linux 沟通连接了。
本人是使用开源软件 FileZilla 进行连接的
打开软件后新建站点;
协议:FTP-文本传输协议
主机:172.29.xx.yy(Linux IP)
端口号: 21
加密方式:如果可用,使用显式的 FTP over TSL(默认)
登录类型:正常
用户:ftptest
密码:
然后点连接,Bingo~大功告成~