从Linux到Windows的scp [关闭]


72

我正在Windows计算机上运行腻子客户端,以成功连接到Linux机器。现在,我希望能够从Linux计算机中的路径下复制文件/home/ubuntu/myfileC:/Users/Anshul/Desktop我的本地计算机上。Windows机器上的用户是anshul。我正在对腻子给出以下命令,但它不起作用:

scp /home/ubuntu/myfile ip_address_of_windows_machine:C:/Users/Anshul/Desktop 

我认为Windows机器的路径是错误的。请帮忙,因为我在很多论坛上投入了精力,但似乎没有一个提供Windows Server正确路径。不要建议其他选择WinScp


3
那么,您在Windows上为ssh服务运行什么?正确答案将取决于您对这个问题的答案。
欧内斯特·弗里德曼·希尔

3
当您寻求帮助时,短语“不工作”绝对是最没用的事情。什么不起作用?您实际上得到了什么结果?是否有任何错误消息?如果是这样,请将它们包括在您的帖子中。
杰里米·J·斯塔彻

尝试使用“ ssh -v ip_address_of_windows_machine dir”。在“-v”选项将提供有关它是如何试图连接,并帮助计算出它是否是IP地址的一些反馈,窗户上的sshd服务器箱等...
戴夫X

scp hello.txt Administrator@WINDOWS_MACHINE_IP:hello.txt 这将文件复制到C:\Users\Administrator\hello.txt
leodotcloud

如果您不想安装第三方的东西,@ emoblazz是最好的答案。您基本上要确保您拥有用户名和@之前
ThinkBonobo

Answers:


81

下载pscp腻子下载页面,然后用它从Windows命令行CMD如下:

pscp username_linux_machine@ip_of_linux_machine:/home/ubuntu/myfile.ext C:\Users\Name\Downloads

输入Linux机器的密码后,复制开始。


在添加-scp标志之前,该命令对我不起作用。
史蒂芬·沃尔夫

51

试试看,它确实有效。

$ 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

7
注意路径中的“ / cygdrive / c”吗?这将在安装CYGWIN之后起作用。还是一个很好的建议!
萨尔瓦多·瓦伦西亚

2
在Windows上,您还可以选择使用pscp(PuTTY软件包的一部分,或者可以单独下载)putty.org
The-Duck

@SalvadorValencia ubuntu @ ip-172-31-22-20:〜$ scp try.sh Administrator @ XXXX:/ cygdrive / c / Users / Administrator / Desktop ssh:连接到主机XXXX端口22:连接拒绝丢失的连接
Ashish Karpe

1
我在Linux服务器上,想复制到Windows服务器!cygwin还会在端口22上监听吗?否则我们应该在Windows Server在AWS ec2实例中打开哪个端口
Ashish Karpe

2
@AshishKarpe这看起来像命令已运行,但遇到路由器/防火墙问题。执行“ telnet XXXX 22”,看看它是否打开了端口。如果没有,那么stackoverflow应该可以帮助您使用iptables或Windows防火墙解决它。
萨尔瓦多·巴伦西亚

47

这个为我工作。

scp /home/ubuntu/myfile username@IP_of_windows_machine:/C:/Users/Anshul/Desktop 

19
这是对这个问题的唯一真实答案。
单独程序员

1
就我而言,该命令有效,但并非完全有效。显示以下消息:ssh:连接到主机<ip_address>端口22:连接被拒绝。
亚历克斯·Javarotti

1
@AlexJavarotti您得到的错误可能是由防火墙设置引起的。
ChouW

因此,我意识到问题不在于MacOS,而是在Mac上,我发现此答案中建议的形式都可行,而且还删除了初始的'/'。所以类似...:C:/ Users / ... etc。没有太大的不同,但是我想值得注意。
cycollins'7

14

通过Git Bash控制台从Windows访问:

scp root@ip:/etc/../your-file "C:/Users/XXX/Download"

4
最后一些可行的建议,谢谢!
MSC

9

Windows不支持 SSH/SCP/SFTP。您是否正在该Windows服务器上运行SSH服务器应用程序?如果是这样,则配置选项之一可能是根所在的位置,并且您将指定相对于该根的路径。无论如何,请查看您在Windows中运行的SSH服务器应用程序的文档。

或者,用于smbclient将文件推送到Windows共享。


17
»Windows本身不支持SSH / SCP / SFTP。«Linux或任何其他操作系统均不支持。为此,它始终需要服务。
乔伊

@Joey-我见过一个Linux发行版打算连接到互联网但没有预装SSH / SCP / SFTP的次数...从不?如果您不认为Linux或macOS本机支持这些功能,那么您要么毫无头绪,要么就“本机”一词的争论不休。
ArtOfWarfare

2
@ArtOfWarfare我敢肯定,Ubuntu默认没有安装SSH服务器。SSH客户端是,但服务器不是。
布鲁诺·芬奇

@BrunoFinger-我几天前刚刚安装了Lubuntu,我可以确认默认情况下它没有SSH服务器。但是Lubuntu是Ubuntu的非常简单的安装-我之所以选择它是因为它的安装占用空间非常小。我认为大多数其他预配置都已经安装了它,无论如何,安装ssh服务器是一个单行命令(我想是这样sudo apt-get install sshd。)几秒钟后,我能够从另一台计算机使用SSH进行登录。
ArtOfWarfare

1
@Joey尽管如此,答案还是有用的,因为Windows甚至在Professional SKU中都将sshd服务作为可选安装提供。(我想知道Enterprise是否默认启用它)。这很容易忽略,因为许多其他平台默认情况下都启用此服务,因此值得一提。必须去“设置/应用/可选功能”并安装“ OpenSSH Server”。服务也必须启动,并且应该设置为自动启动。
cycollins'7

7

您可以使用以下内容

scp -r username_Linuxmachine@LinuxMachineAddress:Path/To/File Path/To/Local/System/Directory

这将复制 File到您当前正在使用的系统上的指定本地目录。

-r标志指示scp以递归方式复制远程路径是否确实是目录。


2

对于所有使用“ Git Bash”完全安装GiT的人:您可以编写:

scp login@ip_addres:/location/to/folders/file.tar .

(末尾有空格和DOT以复制到当前位置)。仅添加证书(y),输入密码,仅此而已。


对于陷入Win env的人们来说,这是一个简单而出色的解决方案,尤其是对于那些没有管理员权限的人,git bash可以在便携式模式下轻松使用。谢谢!
kurp

2

您的代码无法正常工作,因为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 

然后根据需要键入您的远程服务器密码。注意:我进行了测试,并且有效。


2

下载并安装腻子后,我必须像Hesham的帖子一样使用pscp。我是从Windows上的Linux到Windows的,所以我输入以下内容:

c:\ssl>pscp username@linuxserver:keenan/ssl/* .

这会将keenan / ssl文件夹中的所有内容复制到您从(c:\ ssl)执行此命令的本地文件夹(。)。keenan / ssl将指定用户名用户的主文件夹,例如完整路径为/ home / username / keenan / ssl。您可以使用正斜杠(/)指定其他文件夹,例如

c:\ssl>pscp username@linuxserver:/home/username/keenan/ssl/* .

因此,您可以使用来指定Linux根目录下的任何文件夹:/


0

这是使用ssh无需密码即可使用SCP将文件从Linux复制到Windows的解决方案:

  1. 在Linux机器上安装sshpass以跳过密码提示

  2. 脚本

    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/

0

从Windows发送文件到Linux系统

scp文件路径user @ ipaddress:/目标路径

例:

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:/路径到目标路径

例:

scp -r root@127.0.0.1:/tmp/Document.txt C:/Users/adarsh/Desktop/

并提供您的Linux密码。您只需在此命令中添加一个-r即可。谢谢。


0

打开bash窗口。最好是git bash。写

scp username @ remote_ip:/文件目录/文件名'windows_location_you_want_to_store_the_file'

例:

假设您的用户名是珠宝

您的IP是176.35.96.32

您的远程文件位置是/ usr / local / forme

您的文件名是logs.zip

并且要存储在Windows PC的D驱动器forme文件夹中, 则命令将为

scp jewel@17​​6.35.96.32:/usr/local/forme/logs.zip'D:/ forme'

**将本地文件目录保留在单引号内。


0

正如@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\:我需要转移到外部硬盘驱动器,因此我必须授予与该设备共享的权限。


-1

我知道这很老,但我一直在努力。我还没有找到更改目录的方法,但是如果您只想使用C驱动器,则scp的默认值为C。要从Ubuntu的scp到Windows,我最终不得不使用(请注意两个反斜杠):

scp /本地/文件/路径user@111.11.11.111:Users \\ Anshul \\ Desktop

希望这对某人有帮助。


对管理员用户有效吗?我们需要在Windows box中进行哪些配置?
Ashish Karpe

ubuntu @ ip-172-31-22-20:〜$ scp try.sh Administrator @ xxxxxxx:Users \\ Administrator \\ Desktop ssh:连接到主机“ xxxxxx”端口22:连接拒绝丢失的连接
Ashish Karpe

-7

尝试这个:

scp /home/ubuntu/myfile C:\users\Anshul\Desktop

是的,它工作正常。由于我在本地Windows PC上运行此程序,并且正在运行SCP,因此它知道我的C:\驱动器。我不是从Linux框中运行此命令,而是从Windows PC中运行它。
Corey Burnett

-10

如果要将粘贴文件从Unix复制到Windows,将Windows复制到Unix,只需使用端口22的filezilla。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.