菜鸟科技网

Linux命令如何连接FTP服务器?

使用 ftp 命令(传统方式)

ftp 是一个非常基础且广泛支持的 FTP 客户端,几乎所有 Linux 系统都预装了它,但它的交互式界面比较简单,且默认是明文传输。

Linux命令如何连接FTP服务器?-图1
(图片来源网络,侵删)

基本连接

打开终端,直接输入 ftp 命令,后面跟上 FTP 服务器的地址或 IP。

ftp ftp.example.com

或者指定端口(FTP 默认端口是 21):

ftp ftp.example.com 21

交互式命令

连接成功后,你会看到 ftp> 提示符,这时你需要输入用户名和密码。

  • login / username:输入你的 FTP 用户名。
  • password:输入你的密码(输入时是隐藏的)。

常用 FTP 交互命令:

Linux命令如何连接FTP服务器?-图2
(图片来源网络,侵删)
命令 功能 示例
ls 列出当前目录的文件(列表形式) ls
dir 列出当前目录的文件(详细信息) dir
cd <目录名> 切换到指定目录 cd pub
lcd <本地目录> 切换到本地机器的指定目录(非常重要!) lcd /home/user/my_local_files
get <远程文件> 下载单个远程文件 get myfile.txt
put <本地文件> 上传单个本地文件 put my_local_file.zip
mget <文件名模式> 批量下载匹配模式的文件(*.zip mget *.zip
mput <文件名模式> 批量上传匹配模式的文件 mput *.log
执行本地 shell 命令 !ls -l (查看本地目录)
bin 切换到二进制传输模式(强烈推荐,特别是对于非文本文件) bin
ascii 切换到 ASCII 文本传输模式 ascii
prompt 关闭/打开交互式提示(在 mgetmput 时很有用) prompt off
byequit 退出 FTP 连接 bye

完整示例:下载文件

# 1. 连接到服务器
$ ftp ftp.example.com
Connected to ftp.example.com.
220 (vsFTPd 3.0.3)
Name (ftp.example.com:your_local_user): myusername
331 Please specify the password.
Password: ********  # 输入密码,不会显示
230 Login successful.
# 2. 切换到二进制模式(非常重要!)
ftp> bin
200 Switching to Binary mode.
# 3. 查看服务器上的文件
ftp> ls
227 Entering Passive Mode (192,168,1,100,12,34)
150 Here comes the directory listing.
-rw-r--r-- 1 0 0      1234 Jan 01 12:00 important_file.zip
226 Directory send OK.
# 4. 在本地机器上创建一个存放下载文件的目录
ftp> !mkdir -p ~/downloads
ftp> lcd ~/downloads
Local directory now /home/user/downloads
# 5. 下载文件
ftp> get important_file.zip
local: important_file.zip remote: important_file.zip
227 Entering Passive Mode (192,168,1,100,56,78)
150 Opening BINARY mode data connection for important_file.zip (1234 bytes).
226 File send OK.
1234 bytes received in 0.00 secs (1.2 MB/s)
# 6. 退出
ftp> bye
221 Goodbye.

使用 lftp 命令(现代、推荐方式)

lftp 是一个功能更强大、更现代的命令行 FTP 客户端,它支持多种协议(FTP, FTPS, SFTP, HTTP 等),支持多线程下载/上传,有更好的脚本支持,并且默认使用加密的 FTPS (FTP over SSL/TLS),更安全。

如果你的系统没有安装 lftp,可以使用包管理器安装:

  • Debian/Ubuntu: sudo apt-get install lftp
  • CentOS/RHEL: sudo yum install lftp

基本连接

lftp 的语法更简洁,可以直接在命令行中指定用户名、密码和主机。

lftp ftp://用户名:密码@ftp.example.com

安全提示:在命令行中直接写密码不安全,因为会记录在 shell 历史中,更推荐的方式是:

Linux命令如何连接FTP服务器?-图3
(图片来源网络,侵删)
lftp ftp://用户名@ftp.example.com
# 然后它会提示你输入密码

常用 lftp 命令

lftp 的交互式命令与 ftp 类似,但更强大。

命令 功能 示例
ls / dir 列出文件 ls
cd <目录> 切换服务器目录 cd /pub
lcd <目录> 切换本地目录 lcd ~/downloads
get <远程文件> 下载单个文件 get file.zip
put <本地文件> 上传单个文件 put my_doc.pdf
mirror 非常强大! 同步整个目录,默认是下载服务器目录到本地。 mirror
mirror -R 反向同步,上传本地目录到服务器。 mirror -R
pget <远程文件> 多线程下载大文件,速度更快。 pget large_file.iso
mget <文件模式> 批量下载 mget *.tar.gz
mput <文件模式> 批量上传 mput *.log
exitquit 退出 exit

完整示例:同步整个目录

假设你想把本地 ~/project_backup 目录上传到服务器的 /backups/myproject 目录。

# 1. 连接到服务器(会提示输入密码)
$ lftp ftp://myusername@ftp.example.com
Password:
lftp myusername@ftp.example.com:~>
# 2. 切换到服务器上的目标目录
lftp myusername@ftp.example.com:~> cd /backups/myproject
lftp myusername@ftp.example.com:/backups/myproject>
# 3. 确保本地目录是你想上传的目录
lftp myusername@ftp.example.com:/backups/myproject> lcd ~/project_backup
Local directory now /home/user/project_backup
# 4. 使用 mirror -R 进行上传(-R 表示 reverse)
lftp myusername@ftp.example.com:/backups/myproject> mirror -R
Total: 1 file, 12345 bytes, 12345 KB/s
12345 bytes transferred in 1 second (12.3K/s)
# 5. 退出
lftp myusername@ftp.example.com:/backups/myproject> exit

重要提醒:安全性问题

传统的、不加密的 FTP 协议在传输用户名和密码时是明文的,非常容易被网络中间人窃听。在生产环境中,强烈建议使用更安全的协议

  1. FTPS (FTP over SSL/TLS):这是 FTP 的安全版本,在 ftplftp 中都可以启用。

    • ftp 命令中,连接后使用 pbszprot p 命令来启用数据加密。
    • lftp 中,可以直接使用 ftps:// 协议头,它会自动尝试建立安全连接。
  2. SFTP (SSH File Transfer Protocol)这通常是最好的选择! SFTP 运行在 SSH 协议之上,是加密的,并且功能强大,它不是一个 FTP 协议,但常被用来替代 FTP 进行安全的文件传输。

    SFTP 连接示例:

    # 使用 sftp 命令
    sftp your_username@server_ip
    # 连接后交互命令类似 ftp
    sftp> ls
    sftp> get file.txt
    sftp> put file.txt
    sftp> bye
特性 ftp (传统) lftp (现代) sftp (推荐)
协议 FTP (明文) FTP, FTPS, HTTP, HTTPS, SFTP SFTP (SSH)
安全性 不安全 可选 (FTPS) 安全
易用性 基础,交互式 强大,支持脚本 类似 lftp
特色功能 多线程下载、目录同步 基于 SSH,无需额外服务
推荐场景 仅限内网或测试环境 需要高级功能且服务器支持 FTPS 所有需要安全传输的场景

对于大多数用户,尤其是需要从公网传输文件时,请优先使用 sftp,如果必须使用 FTP,请使用 lftp 并确保服务器支持 FTPS

分享:
扫描分享到社交APP
上一篇
下一篇