在 Linux 系统之间传输文件时,安全性往往是首要考量。SFTP(SSH 文件传输协议)通过与 SSH 的深度整合,为我们提供了一种既高效又可靠的加密传输方案。整个过程相当于为文件传送通道安装了一把牢固的加密锁。

1. 确保 OpenSSH 服务器就位
实现加密传输的基础是 SSH 服务。绝大多数 Ubuntu 系统已预装 OpenSSH 客户端,但服务器端可能需要手动安装。打开终端,执行以下两条命令来更新软件包列表并安装 OpenSSH 服务器。
sudo apt update
sudo apt install openssh-server
2. 启动并设置 SSH 服务自启动
安装完成后,我们需要启动 SSH 服务,并建议将其设置为开机自动运行,以避免每次重启后手动操作。
sudo systemctl start ssh
sudo systemctl enable ssh
3. 加固防线:配置强加密算法
默认的 SSH 配置已具备一定的安全性,但主动采用业界推荐的强加密算法能使防护等级进一步提升。编辑 SSH 服务的主配置文件:
sudo nano /etc/ssh/sshd_config
在文件中找到或添加以下几行配置,它们分别指定了强加密算法、消息认证码以及密钥交换协议:
Ciphers aes256-ctr,aes192-ctr,aes128-ctr
MACs hmac-sha2-512,hmac-sha2-256
KexAlgorithms curve25519-sha256@libssh.org,diffie-hellman-group-exchange-sha256
保存并退出编辑器后,务必重启 SSH 服务以使新配置生效。
sudo systemctl restart ssh
4. 开始使用 SFTP 进行加密传输
服务配置妥当后,你就可以在终端中直接使用 SFTP 命令连接到远程服务器了。连接命令的格式非常简单:
sftp username@remote_host
这里的 username 是你在远程服务器上的账户名,remote_host 可以是服务器的 IP 地址或域名。输入命令后,系统会提示你输入对应用户的密码。
5. 掌握核心的 SFTP 操作命令
成功连接后,你会进入 SFTP 的交互式命令行环境。下面这些是文件管理中最常用到的命令:
- 上传文件:将本地文件发送到远程服务器。
put local_file remote_file - 下载文件:从远程服务器获取文件到本地。
get remote_file local_file - 删除文件:移除远程服务器上的指定文件。
rm remote_file - 管理目录:在远程服务器上创建或删除目录。
mkdir directory_name rmdir directory_name
6. 进阶保障:使用 SSH 隧道建立加密通道
在公共 Wi‑Fi 等信任度较低的网络环境中,你可以通过创建 SSH 隧道为 SFTP 连接额外增加一层加密“套管”,使数据传输路径全程处于保护之下。
在本机打开一个终端窗口,执行以下命令建立隧道。这条命令的作用是将本地某个端口的数据转发到远程服务器的指定端口。
ssh -L local_port:remote_host:remote_port username@ssh_server参数说明:
local_port:本地监听的端口号(例如 2222)。remote_host和remote_port:最终要连接的目标服务器地址和端口(通常是 22)。ssh_server:你可以访问的 SSH 跳板机地址。
保持上述隧道连接,然后打开另一个终端窗口。此时,SFTP 客户端不再直接连接目标服务器,而是连接到你本机的隧道端口。
sftp -P local_port localhost
通过这种方式,所有 SFTP 流量都会先经由本地的加密隧道,再到达目标服务器,安全性得到显著增强。
总结
总而言之,在 Ubuntu 上借助 SFTP 实现文件加密传输,核心在于正确配置并启用 SSH 服务。通过采用强加密算法配置,并在必要时构建 SSH 隧道,文件在传输过程中的机密性和完整性就能得到有力保障。这套组合方案,足以应对绝大多数对安全性有要求的文件传输场景。
