scp 从 Linux 到 Windows [关闭]
Posted
技术标签:
【中文标题】scp 从 Linux 到 Windows [关闭]【英文标题】:scp from Linux to Windows [closed] 【发布时间】:2012-05-01 10:07:56 【问题描述】:我在 Windows 机器上运行 putty 客户端以成功连接到 Linux 机器。现在我希望能够在我的本地计算机上将路径/home/ubuntu/myfile
下的Linux 机器上的文件复制到C:/Users/Anshul/Desktop
。 Windows 机器上的用户是anshul
。我在 putty 上发出以下命令,但它不起作用:
scp /home/ubuntu/myfile ip_address_of_windows_machine:C:/Users/Anshul/Desktop
我认为 Windows 机器的路径是错误的。请提供帮助,因为我在大量论坛上撞了头,但似乎没有一个为 Windows 服务器提供正确的路径。不要建议像WinScp
这样的替代选项
【问题讨论】:
那么您在 Windows 上为 ssh service 运行什么?正确答案取决于您对此问题的回答。 “不工作”这句话绝对是您在寻求帮助时可以说的最没用的事情。什么不工作?你实际上得到了什么结果?是否有任何错误信息?如果是这样,请将它们包含在您的帖子中。 试试 'ssh -v ip_address_of_windows_machine dir' 如果你不能 ssh 到盒子,那么你也不能 scp 到它。 '-v' 选项将给出一些关于它如何尝试连接的反馈,并帮助确定它是否是 ip 地址、windows 盒子上的 sshd 服务器等等......scp hello.txt Administrator@WINDOWS_MACHINE_IP:hello.txt
这将文件复制到C:\Users\Administrator\hello.txt
。
如果您不想安装第三方的东西,@emoblazz 有最好的答案。你基本上确保你有你的用户名和@之前
【参考方案1】:
Windows 本身不支持SSH/SCP/SFTP
。您是否在该 Windows 服务器上运行 SSH 服务器应用程序?如果是这样,则配置选项之一可能是根所在的位置,您将指定相对于该根的路径。无论如何,请查看您在 Windows 中运行的 SSH 服务器应用程序的文档。
或者,使用 smbclient
将文件推送到 Windows 共享。
【讨论】:
»Windows 本身不支持 SSH/SCP/SFTP。« Linux 或任何其他操作系统也不支持。它总是需要为此提供服务。 @Joey - 我见过有多少次 Linux 发行版打算连接到互联网但没有预装 SSH/SCP/SFTP……从来没有?如果你不认为 Linux 或 macOS 原生支持这些东西,那么你要么一无所知,要么争论的焦点是“原生”这个词的含义。 @ArtOfWarfare 我很确定 Ubuntu 默认没有安装 SSH 服务器。 SSH 客户端是,但不是服务器。 @BrunoFinger - 几天前我刚刚安装了 Lubuntu,我可以确认它默认没有 SSH 服务器。但是 Lubuntu 是 Ubuntu 的一个非常简单的安装 - 我故意选择它是因为它的安装占用空间非常小。我认为大多数其他预先构建的配置已经安装了它,无论如何,安装 ssh 服务器是一个单行命令(在我的脑海中,我认为它是sudo apt-get install sshd
。)几秒钟后我能够从另一台计算机通过 SSH 登录。
@Joey 尽管如此,答案还是很有用的,因为即使在 Professional SKU 中,Windows 也将 sshd 服务作为可选安装提供。 (我想知道企业是否默认启用它)。这很容易被忽视,因为许多其他平台默认启用此服务,所以值得一提。必须转到“设置/应用程序/可选功能”并安装“OpenSSH 服务器”。服务也必须启动,并且应该设置为自动启动。【参考方案2】:
如果您想将粘贴文件从 Unix 复制到 Windows 和 Windows 到 Unix,只需使用端口 22 的 filezilla。
【讨论】:
【参考方案3】:试试这个:
scp /home/ubuntu/myfile C:\users\Anshul\Desktop
【讨论】:
是的,它工作得很好。因为我在我的本地 Windows PC 上运行它并且我正在运行 SCP,所以它知道我的 C:\ 驱动器。我不是在 Linux 机器上运行这个命令,而是在我的 Windows PC 上运行它。【参考方案4】:试试这个,真的很管用。
$ scp username@from_host_ip:/home/ubuntu/myfile /cygdrive/c/Users/Anshul/Desktop
用于复制所有文件
$ scp -r username@from_host_ip:/home/ubuntu/ *. * /cygdrive/c/Users/Anshul/Desktop
【讨论】:
注意到路径中的“/cygdrive/c”了吗?这将在安装 CYGWIN 后起作用。仍然是一个很好的建议! 在 Windows 上你也可以选择使用 pscp(PuTTY 包的一部分,或者可以单独下载)putty.org @SalvadorValencia ubuntu@ip-172-31-22-20:~$ scp try.sh Administrator@XXXX:/cygdrive/c/Users/Administrator/Desktop ssh: 连接主机 XXXX 端口 22 : 连接拒绝丢失连接 我在 Linux 服务器上,想复制到 windows 服务器! cygwin 还会监听端口 22 吗?否则我们应该打开哪个端口,因为我的 Windows 服务器在 aws ec2 实例中 @AshishKarpe 这看起来像是运行了命令,但遇到了路由器/防火墙问题。执行“telnet XXXX 22”并查看它是否打开了端口。如果没有,那么 *** 应该可以帮助您使用 iptables 或 windows 防火墙来解决它。【参考方案5】:你可以使用类似下面的东西
scp -r username_Linuxmachine@LinuxMachineAddress:Path/To/File Path/To/Local/System/Directory
这会将File
复制到您当前正在使用的系统上的指定本地目录。
-r
标志告诉scp
如果远程路径确实是一个目录,则递归复制。
【讨论】:
【参考方案6】:这里是使用 ssh 无需密码的 SCP 将文件从 Linux 复制到 Windows 的解决方案:
在 Linux 机器上安装 sshpass 以跳过密码提示
脚本
sshpass -p 'xxxxxxx' scp /home/user1/*.* testuser@x.x.x.x:/d/test/
详情:
sshpass -p 'password' scp /source_path/*.* windowsusername@windowsMachine_ip:/destination_drive/subfolder/
【讨论】:
【参考方案7】:从Putty download page 下载pscp
,然后从Windows 命令行CMD
使用它,如下所示:
pscp username_linux_machine@ip_of_linux_machine:/home/ubuntu/myfile.ext C:\Users\Name\Downloads
在您输入 Linux 机器的密码后开始复制。
【讨论】:
在我添加 -scp 标志之前,此命令对我不起作用。 Windows 10 附带的scp
在完成较大的传输时出现问题(奇怪的错误“pscp
似乎工作得很好!我知道这已经过时了,但我一直在苦苦挣扎。我还没有找到更改目录的方法,但是如果您只想使用 C 驱动器,则 scp 默认为 C。要从 Ubuntu scp 到 Windows,我最终不得不使用(注意双反斜杠):
scp /local/file/path user@111.11.11.111:Users\\Anshul\\Desktop
希望这对某人有所帮助。
【讨论】:
对管理员用户有用吗?我们需要在 Windows box 中进行哪些配置? ubuntu@ip-172-31-22-20:~$ scp try.sh Administrator@xxxxxxx:Users\\Administrator\\Desktop ssh:连接到主机“xxxxxx”端口 22:连接被拒绝失去联系【参考方案9】:对于所有使用“Git Bash”完全安装Git的人:你可以写:
scp login@ip_addres:/location/to/folders/file.tar .
(末尾有空格和点以复制到当前位置)。不仅仅是添加证书(y),写密码就可以了。
【讨论】:
对于那些被困在 Win 环境中的人来说,这是一个简单而伟大的解决方案,尤其是 git bash 在便携模式下很容易使用,对于那些没有管理员权限的人来说。谢谢!【参考方案10】:这个对我有用。
scp /home/ubuntu/myfile username@IP_of_windows_machine:/C:/Users/Anshul/Desktop
【讨论】:
这是这个问题的唯一正确答案。 就我而言,该命令有效但不完全。显示以下消息: ssh: connect to host一旦我下载并安装了腻子,我就必须像上面 Hesham 的帖子那样使用 pscp。我在 Windows 上从 Linux 对 Windows 进行了操作,所以我输入了以下内容:
c:\ssl>pscp username@linuxserver:keenan/ssl/* .
这会将keeanan/ssl 文件夹中的所有内容复制到您从(c:\ssl) 执行此命令的本地文件夹(.)。 keenan/ssl 将指定用户名用户的主文件夹,例如完整路径为 /home/username/keenan/ssl。您可以使用正斜杠 (/) 指定不同的文件夹,例如
c:\ssl>pscp username@linuxserver:/home/username/keenan/ssl/* .
因此您可以使用:/
指定Linux 根目录下的任何文件夹。
【讨论】:
【参考方案12】:通过 Git Bash 控制台从 Windows 访问(也适用于 CMD 和 PowerShell):
scp user@ip:/dir1/dir2/file "D:\dir1\dir2"
【讨论】:
最后一些有用的建议,谢谢! 不错!这很好用而且非常简单。【参考方案13】:您的代码不起作用,因为 c:/ 或 d:/ 对于 linux 完全错误,只需使用 /mnt/c 或 /mnt/c
在本地 windows10-ubuntu bash 中使用以下命令:
供下载: (从您的远程服务器文件夹到 d:/ubuntu):
scp username@ipaddress:/folder/file.txt /mnt/d/ubuntu
如果需要,请输入您的远程服务器密码。
上传: (从 d:/ubuntu 到远程服务器):
scp /mnt/d/ubuntu/file.txt username@ipaddress:/folder/file.txt
如果需要,然后键入您的远程服务器密码。 注意:我测试过,它工作正常。
【讨论】:
【参考方案14】:将文件从 windows 发送到 linux 系统
scp path-to-file user@ipaddress:/path-to-destination
例子:
scp C:/Users/adarsh/Desktop/Document.txt root@127.0.0.1:/tmp
请记住,Windows 路径中的文件需要使用正斜杠(/)代替反斜杠(\),否则会显示错误
C:UsersadarshDesktopDocument.txt: 没有这样的文件或目录
。 执行 scp 命令后,您将要求输入 linux 机器中 root 用户的密码。 给你...
将文件从 linux 发送到 windows 系统
scp -r user@ipaddress:/path-to-file path-to-destination
例子:
scp -r root@127.0.0.1:/tmp/Document.txt C:/Users/adarsh/Desktop/
并提供您的 linux 密码。 您必须在此命令中添加的唯一一项是 -r。 谢谢。
【讨论】:
【参考方案15】:打开 bash 窗口。 最好是 git bash。 写
scp username@remote_ip:/directory_of_file/filename 'windows_location_you_want_to_store_the_file'
例子:
假设您的用户名是jewel
你的IP是176.35.96.32
您的远程文件位置是 /usr/local/forme
您的文件名为 logs.zip
并且您想存储在 Windows PC 的 D 盘文件夹中 那么命令将是
scp Jewel@176.35.96.32:/usr/local/forme/logs.zip 'D:/forme'
**保持本地文件目录在单引号内。
【讨论】:
【参考方案16】:正如@Hesham Eraqi 所建议的那样,它以这种方式对我有用(从 Ubuntu 转移到 Windows(我试图在该答案中添加评论,但由于声誉问题,我不能):
pscp -v -r -P 53670 user@xxx.xxx.xxx.xxx:/data/genetic_map/sample/P2_283/* \\Desktop-mojbd3n\d\cc_01-1940_data\
地点:
-v
:显示详细消息。-r
:递归复制目录。-P
:连接到指定端口。53670
:连接Ubuntu服务器的端口号。 \\Desktop-mojbd3n\d\genetic_map_data\
:我需要转移到外置硬盘,因此我必须授予此设备的共享权限。
【讨论】:
以上是关于scp 从 Linux 到 Windows [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
使用 Jenkins 管道脚本从 Windows 到 Linux 的 SCP
scp从linux服务器拷贝文件到windows的机子上怎么写命令?