WSL Ubuntu终端无法传输本地文件到远程服务器如何解决
本地WSL Ubuntu传输文件到远程服务器的解决方案
核心逻辑
你所有操作都在本地WSL终端执行,读取本地文件不需要额外通过SSH回连本地主机,直接写本地路径即可。
正确操作方法
单文件传输(适用于你的test1.zip场景)
基础命令格式:scp 本地文件路径 远程用户名@远程服务器地址:远程目标路径
对应你的场景正确命令:scp /mnt/c/Users/test/test1.zip user1@stuff:/home/test/codes/
你之前执行该命令报权限错误的解决方法:
- 先确认远程
stuff服务器的/home/test/codes/目录存在,且user1用户对该目录有写入权限 - 权限不足时可以先传到user1的默认家目录,再登录远程服务器移动文件:
- 本地执行:
scp /mnt/c/Users/test/test1.zip user1@stuff:~/ - 登录远程
stuff服务器执行:sudo mv ~/test1.zip /home/test/codes/
- 本地执行:
文件夹传输
传输文件夹需要加-r递归参数:scp -r /mnt/c/Users/test/本地文件夹名 user1@stuff:/home/test/codes/
大文件/多文件优化方案
如果需要断点续传、增量同步,推荐使用rsync工具:rsync -avP /mnt/c/Users/test/test1.zip user1@stuff:/home/test/codes/
之前报错的原因说明
- 第1、3次命令报错:
lauda是本地WSL的终端名称,不是网络可解析的域名,无法通过该名称定位到你的本地主机 - 第2、4次命令报错:WSL默认未开启SSH服务,且WSL的IP是Windows内部虚拟网卡地址,未做端口映射时外部设备无法访问,完全不需要通过SSH回连本地的逻辑
- 第5次命令报错:远程服务器的
/home/test/codes/目录对user1用户无写入权限,命令逻辑本身没有问题 - 第6次命令报错:首先搞反了scp的「源路径在前、目标路径在后」的参数顺序,其次传输目录未加
-r参数,因此触发非普通文件报错
内容的提问来源于stack exchange,提问作者The Great
相关产品推荐
相关产品推荐

