无需Cygwin,从远程Windows机器向Linux机器复制文件的方法
不用Cygwin实现Windows到Linux的文件复制
我来给你几个实用的方案,完全不需要装Cygwin就能搞定这个需求:
方案1:用Windows原生OpenSSH客户端(推荐,无需额外软件)
现在Win10和Win11默认自带了OpenSSH客户端,直接用它从Windows端把文件推到Linux就行,步骤很简单:
- 先确认OpenSSH客户端已安装:打开「设置」→「应用」→「可选功能」,搜索「OpenSSH客户端」,如果没装就点「添加功能」安装。或者用PowerShell快速检查:
要是显示未安装,就运行:Get-WindowsCapability -Online | Where-Object Name -like 'OpenSSH.Client*'Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0 - 打开Windows的命令提示符(CMD)或者PowerShell,运行scp命令推送文件:
比如你的Linux用户是scp E:\file.txt 你的Linux用户名@Linux机器IP或主机名:/Linux上的目标路径/ubuntu,机器IP是192.168.1.100,目标路径是/home/ubuntu/,那命令就是:
输入Linux用户的密码就能完成复制了。scp E:\file.txt ubuntu@192.168.1.100:/home/ubuntu/
方案2:在Linux上通过SMB访问Windows共享
利用Windows自带的文件共享功能,在Linux上挂载Windows的共享目录后复制文件:
- 在Windows端:找到
E:\file.txt所在的文件夹,右键→「属性」→「共享」,设置共享权限(比如允许你的Windows用户访问,或者临时开guest权限,不过后者不安全)。 - 在Linux端:先安装SMB客户端工具,不同发行版命令不同:
- Debian/Ubuntu系列:
sudo apt update && sudo apt install smbclient - CentOS/RHEL系列:
sudo yum install samba-client
- Debian/Ubuntu系列:
- 连接Windows共享并下载文件:
运行命令(替换成你的Windows机器IP、用户名和共享路径):
输入Windows密码后,会进入smbclient交互界面,用smbclient //192.168.1.200/E$ -U 你的Windows用户名get file.txt /home/你的Linux用户/就能把文件下载到Linux指定路径。
也可以用非交互命令直接下载(注意密码明文会暴露,不推荐在公共环境用):smbget smb://你的Windows用户名:密码@192.168.1.200/E$/file.txt -O /home/你的Linux用户/file.txt
方案3:用WinSCP图形化工具(适合怕命令行的用户)
这是Windows上免费的SFTP/FTP图形化工具,完全不用命令行,拖放就能复制:
- 下载安装WinSCP后,新建会话:协议选「SFTP」,输入Linux机器的IP、用户名、密码,点击「登录」。
- 登录成功后,左侧是Windows本地文件目录,右侧是Linux机器的目录,找到
E:\file.txt直接拖到右侧目标目录就行,全程可视化操作,非常省心。
关于你之前尝试的命令的说明
你之前在Linux上跑的scp windows-machine:e:\file.txt是行不通的,原因有两个:
- Linux的scp无法直接识别Windows的盘符路径格式,除非Windows机器上装了SSH服务器,并且路径要写成Windows SSH服务能识别的格式(比如
/e/file.txt而不是e:\file.txt)。 - 即使Windows装了SSH服务,从Linux拉文件也需要Windows端的权限验证,不如直接从Windows推文件到Linux来得方便。
内容的提问来源于stack exchange,提问作者Pa1




