对于用惯了 terminal 的专业开发人员来说,终端无疑是一种高效的操作环境;但对于我这样习惯了 GUI 图形界面的人来说,终端内的操作就显得不那么友好了。比如文件管理,哪怕用了 tree
命令,也总感觉不如资源管理器或者 Finder 直观;再比如文件编辑,Vim 确实是一代神器,说它的坏话是要被围攻的 然而我并不怎么会用,也记不清许多快捷键,只好拱手放弃。
除非使用 Windows Server,或者额外安装 GUI 界面,否则必然只能对着终端操作服务器。当然,我们不考虑上面那些麻烦又小众的做法,只能退而求其次,期望能在桌面端管理编辑服务器上的文件。能够实现这个功能的最常用的工具就是 FTP 服务器。下面我们以 Ubuntu 下的 vsftpd 为例,为 VPS 搭建一个 FTP 服务器。
vsftpd 是“very secure FTP daemon”的缩写,是一款在 Linux 发行版中最受推崇的 FTP 服务器程序。特点是小巧轻快,安全易用,且完全免费。
服务器配置
首先当然是更新源列表并安装 vsftpd。
1 |
|
安装完成后我们需要对服务器进行进一步的配置。编辑配置文件:
1 |
|
修改为如下:
# Allow anonymous FTP? (Disabled by default).
anonymous_enable=YES
#
# Uncomment this to allow local users to log in.
local_enable=YES
#
# Uncomment this to enable any form of FTP write command.
write_enable=YES
. . .
# Uncomment this to allow the anonymous FTP user to upload files. This only
# has an effect if the above global write enable is activated. Also, you will
# obviously need to create a directory writable by the FTP user.
anon_upload_enable=YES
#
# Uncomment this if you want the anonymous FTP user to be able to create
# new directories.
anon_mkdir_write_enable=YES
这些配置项都有详细的注释可以参考。这里为了方便起见,开启了匿名用户对 FTP 的读写等权限。系统默认的匿名用户主目录(登录 FTP 时的默认根目录,匿名用户没有权限向上查看其他目录)是 /srv/ftp
,也可以在刚才的配置文件中添加形如 anon_root=/home/ftp
的配置来修改。登录 FTP 时,匿名用户的用户名为 anonymous
,密码为空。
事实上,linux 系统中的每个用户都有自己对 FTP 的访问权限和主目录,FTP 登录账号密码即为系统用户名和相应的密码。其中,root 用户自然对所有文件拥有最高权限,并且有权限跳出默认目录,访问服务器的整个硬盘。但为了安全起见,系统默认是不允许 root 用户登录 FTP 的。我们可以用编辑配置文件解除限制:
1 |
|
在默认存在的 root
前加 # 注释掉即可。
至此, FTP 的服务器端就配置好了。最后,还需要使用命令开启 FTP 服务。
- 启动:
sudo /etc/init.d/vsftpd start
或sudo service vsftpd start
- 重启:
sudo /etc/init.d/vsftpd restart
或sudo service vsftpd restart
BTW,停止 FTP 服务:sudo /etc/init.d/vsftpd stop
或 sudo service vsftpd stop
FTP 客户端
现在,可以使用浏览器访问 ftp://your_ip ,登录 FTP 了。不过,浏览器中只能访问主目录及其子目录,只能查看或下载文件,无法进行上传等操作。而在 Windows 资源管理器中也能访问 FTP 资源,可以进行上传操作,但仍缺少很多功能。为了安全稳定并发挥出 FTP 的全部实力,应该使用专业的 FTP 客户端进行文件管理。
题图所示的 WinSCP 是 Windows 端最常用的 FTP 客户端之一,功能强大,操作也比较直观,在此就不多做介绍了。PuTTY+WinSCP 的组合是相当一部分 VPS 使用者的标配。
除此之外,Xftp 也是相当强大的 FTP 客户端。不过值得关注的是和它同属一家公司,配套的 SSH 客户端 Xshell。近来我已经抛弃了 PuTTY 全面转用 Xshell。除了因为它功能更加强大,对个人用户免费,颜值高,还因为它支持一个神奇的功能……
彩蛋:另一种文件传输方式——ZMODEM
使用 FTP 进行文件传输意味着需要在使用 SSH 客户端之余另开一个 FTP 客户端,多少显得有些麻烦。Xshell 支持另一种文件传输协议 ZMODEM。这个协议的亮点在于它支持直接在终端界面上传或下载文件。
首先,需要在服务器上安装此功能。
1 |
|
这里有可能会遇到问题,报错:
Unable to fetch some archives, maybe run apt-get update or try with –fix-missing?
如果重新 apt-get update
后仍然报错,且安装源没有问题的话,一般是 DNS 解析出了问题。解决方式很简单:
1 |
|
编辑文件,添加一行:nameserver 8.8.8.8
即可。
安装完成后,就可以使用 rz
上传文件,使用 sz filename
下载文件了。配合 Xshell 的拖拽上传功能,对于少量小文件的传输,简直比 FTP 高到不知哪里去了。
值得注意的是,Xshell 的国内代理商是著名的某马克丁,在国内站上下载的安装包是必须付费的。因此,请务必去国外官方网站下载安装。
*更新于2019-02-20
其实,系统自带的 SSH 里就有一个组件 SFTP,S 是 Secure 的意思,简单说就是不用安装什么 FTP 服务器,开箱就能使用的文件传输工具。主流的 FTP 工具都支持 SFTP,只是 WIndows 资源管理器和浏览器是无法直接访问的。