使用SFTP将文件传输到Linux虚拟机的步骤如下:
1. 确保SSH服务正常运行
Linux虚拟机需安装并启动SSH服务(通常是`openssh-server`)。可通过命令检查状态:
sh
sudo systemctl status sshd
若未安装,使用包管理器安装(如Ubuntu/Debian):
sh
sudo apt install openssh-server
2. 获取虚拟机IP地址
在虚拟机终端执行`ifconfig`或`ip a`查看IP地址,确保主机与虚拟机网络互通(NAT/桥接模式需配置正确)。若为本地虚拟机,通常使用`192.168.x.x`或`10.0.x.x`内网地址。
3. SFTP连接虚拟机
从本地终端使用以下命令连接(替换`username`和`ip`):
sh
sftp username@虚拟机IP
首次连接需确认主机密钥,输入用户密码后进入SFTP交互界面。
4. 常用SFTP命令
- `put 本地文件`:上传文件到虚拟机当前目录。
- `get 远程文件`:下载文件到本地当前目录。
- `ls`:列出虚拟机当前目录文件。
- `cd 路径`:切换虚拟机目录。
- `lcd 路径`:切换本地目录。
- `!command`:在本地执行命令(如`!pwd`查看本地路径)。
5. 断点续传与大文件处理
SFTP支持断点续传。若传输中断,重新连接后使用`reput`或`reget`继续传输。对大文件建议压缩后传输以减少时间。
6. 密钥认证(免密码登录)
为提高安全性,可配置SSH密钥认证:
- 本地生成密钥对:`ssh-keygen -t rsa`
- 上传公钥到虚拟机:`ssh-copy-id username@虚拟机IP`
之后SFTP连接无需输入密码。
7. 常见问题排查
- 连接超时:检查防火墙是否放行22端口(`sudo ufw allow 22`)。
- 权限拒绝:确保虚拟机目标目录有写入权限(`chmod`或`chown`修改)。
- 传输慢:若为NAT模式,可尝试桥接网络或调整SSH配置(如禁用DNS反向解析)。
8. 替代方案
- 图形化工具:WinSCP(Windows)、FileZilla(跨平台)支持拖拽操作。
- rsync:适用于大量文件同步,命令示例:
sh
rsync -avz -e ssh 本地路径 username@虚拟机IP:远程路径
SFTP基于SSH协议,默认加密传输数据,适合安全要求较高的场景。若需更高效率,可在内网环境启用SCP协议,但SCP缺乏交互式功能。