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 在完成较大的传输时出现问题(奇怪的错误“: Is a directory”,尽管下载完成但留下了部分文件)。 pscp 似乎工作得很好!【参考方案8】:

我知道这已经过时了,但我一直在苦苦挣扎。我还没有找到更改目录的方法,但是如果您只想使用 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 port 22: Connection denied. @AlexJavarotti 您遇到的错误可能是防火墙设置引起的。 所以我意识到问题不是关于 MacOS,而是在 Mac 上,我发现这个答案中建议的表单都有效,而且还有一个删除初始“/”的变体。所以像...:C:/Users/...等。没有太大的不同,但我想值得注意。 @ChouW "Connection denied" 不是防火墙问题。只是服务没有启动,所以没有绑定22端口。【参考方案11】:

一旦我下载并安装了腻子,我就必须像上面 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@17​​6.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

Linux到Windows SCP无密码访问

scp从linux服务器拷贝文件到windows的机子上怎么写命令?

使用 putty 从 windows scp 到 Linux

Linux命令-scp

如何从 EC2 下载文件 [关闭]