Win10环境使用scp传输Linux远程文件到本地的路径异常问题
问题根因
你操作的核心错误有两点:
- 你执行命令的环境是PuTTY登录后的远程Unix服务器Shell,不是你的本地Windows 10系统。此时执行scp传输的所有路径默认都是远程服务器的文件系统路径,你写的
\desktop实际是远程服务器根目录下的路径,文件全程都在远程服务器上存储,根本没有传到本地,自然在本地找不到。 - Unix Shell中反斜杠
\是转义字符,不是Windows系统的路径分隔符,你写的\desktop\demo会被Unix解析为desktopdemo字符串,完全不符合你预期的Windows路径格式。
你之前看到的传输成功提示,实际是远程服务器把自身~/A1/demo文件复制到了自身根目录下的对应位置,你在远程服务器执行ls /desktop就能找到这个文件,和你的本地电脑没有任何关系。
正确操作方法
不要在PuTTY的远程会话里执行本地传输命令,直接在本地Windows环境执行scp相关命令即可,以下是两种最简便的方案:
方案1:使用PuTTY配套的pscp工具
PuTTY默认自带同工具集的pscp.exe用于文件传输:
- 关闭当前PuTTY远程会话,按Win+R输入
cmd回车,打开本地命令提示符 - 进入PuTTY的安装目录(或者提前把PuTTY安装目录加入系统环境变量),执行以下命令:
pscp hasanjee@cs.utm.utoronto.ca:~/A1/demo C:\Users\你的本地Windows用户名\Desktop\
- 按照提示输入远程服务器的账号密码,等待传输完成后,文件就会保存在你的本地Windows桌面上。
方案2:使用Win10自带的OpenSSH组件
Win10 1809及以上版本默认预装OpenSSH客户端,不需要额外安装任何工具:
- 同样在本地打开CMD或者PowerShell,直接执行以下命令:
scp hasanjee@cs.utm.utoronto.ca:~/A1/demo $env:USERPROFILE\Desktop\
- 验证远程服务器密码后即可完成传输,这条命令会自动定位到你当前登录用户的桌面路径,不需要手动替换用户名。
不推荐在已登录远程的PuTTY会话里通过反向隧道配置传文件,步骤繁琐容易出错,普通用户直接使用上述两种方案即可。
内容的提问来源于stack exchange,提问作者Heskinammo
相关产品推荐
相关产品推荐

