使用 scp 将本地文件从 Windows 复制到远程服务器 [关闭]

Posted

技术标签:

【中文标题】使用 scp 将本地文件从 Windows 复制到远程服务器 [关闭]【英文标题】:Copying a local file from Windows to a remote server using scp [closed] 【发布时间】:2012-02-17 01:09:38 【问题描述】:

所以,我试图通过 ssh 和 scp 将文件文件夹从本地计算机传输到服务器。 sudoing 后,我使用如下命令:

scp -r C:/desktop/myfolder/deployments/ user@host:/path/to/whereyouwant/thefile

我得到错误:

ssh: C: 名称或服务未知

我猜这是c:/desktop 等的语法。有什么想法吗?

顺便说一句,我正在使用 putty + Windows 7。

【问题讨论】:

windows/dos 上的标准路径说要使用\反斜杠,所以试试 C:\desktop\myfolder\deployments\ 所有非 GUI 解决方案都不适合我。我收到错误,fork:没有这样的文件或目录。我可以ssh 目的地,我可以dir 到源。 【参考方案1】:

如果你的盘符是C,你应该可以使用

scp -r \desktop\myfolder\deployments\ user@host:/path/to/whereyouwant/thefile

没有驱动器号和反斜杠而不是正斜杠。

你正在使用 putty,所以你可以使用pscp。它更适合Windows。

【讨论】:

scp -r root@31.222.168.64:/var/www/vhosts/mywork \test ---我添加了这段代码这是在我的服务器中创建一个测试文件夹 no 在我的本地计算机 scp - r root@31.222.168.64:/var/www/vhosts/mywork D:\test ---给出错误“ssh:无法解析主机名 D:名称或服务未知丢失连接” @pTi 您在使用哪个scp?如果您使用的是 Cygwin 的scp,则可以使用路径为/cygdrive/d/test。要省略使用/cygdrive,您可以运行mount --change-cygdrive-prefix /,这样路径将改为/d/test 不确定它是特定于隧道还是特定于 Windows 10 中的 scp 版本,但我不得不使用语法(经过大量试验和错误): scp -P -r 。 /localdir user@host:"D:\remotedir"【参考方案2】:

驱动器号可以在目标中使用

scp some_file user@host:/c/temp

其中c 是驱动器号。它被视为一个目录。

也许这也适用于源代码。

【讨论】:

感谢这个 simpleworking 答案,而不是试图让我使用其他软件或其他任何东西!我在网上搜索才发现,没有人直接回答这个问题...... 这无法获取文件 就我而言,user@host:/ 是我的C:\ 目录的根目录。所以如果我写user@host:/temp/,就相当于C:\temp\ 。我只能访问我的 C 驱动器,而不能访问其他驱动器。 @imans77,这可能有效,但如果您的驱动器号是 e:,则不会 ;-) 我就是这种情况以及我是如何发现这一点的。【参考方案3】:

在 Windows 上,您可以使用winSCP 使用 scp 的图形界面。一个不错的免费软件,实现了SFTP protocol。

【讨论】:

效果很好!我必须选择 scp 协议才能成功连接。 好东西。非常感谢) 非常棒。它救了我的命!大声笑【参考方案4】:

我看到这篇文章很老了,但是在我寻找这个问题的答案时,我无法从广阔的互联网高速公路上找到解决方案。因此,我希望我能为某人做出贡献和帮助,因为他们也发现自己在寻找答案时遇到困难。这个简单、自然的问题似乎在任何地方都没有记录。

在连接到 Windows 10 Pro 的 Windows 10 Pro 上,都运行 OpenSSH(Windows 版本 7.7p1,LibreSSL 2.6.5),我通过反复试验找到了解决方案。虽然出乎意料的简单,但还是花了一些时间。我发现所需的语法是

通过示例而不是更多晦涩和不完整的模板:

从远程系统安全地传输到本地系统:

scp user@remotehost:\D\mySrcCode\ProjectFooBar\somefile.cpp C:\myRepo\ProjectFooBar

或者反过来:

scp C:\myRepo\ProjectFooBar\somefile.cpp user@remotehost:\D\mySrcCode\ProjectFooBar

我还发现如果路径中有空格,引号应该在远程主机名之后开始:

scp user@remotehost:"\D\My Long Folder Name\somefile.cpp" C:\myRepo\SimplerNamerBro

另外,对于你的特殊情况,我附和 Cornel 所说的话:

在 Windows 上,至少在常规命令控制台中使用反斜杠。

亲切的问候。 火箭城电磁学

【讨论】:

【参考方案5】:

你也可以试试这个:

scp -r /cygdrive/c/desktop/myfolder/deployments/ user@host:/path/to/whereyouwant/thefile

【讨论】:

只有在安装了 cygwin 并且在 cygwin shell 中运行或使用 cygwin 可执行文件时,此答案才有效。但这是一个适用于某些人的有效答案。【参考方案6】:

我发现在 Windows 上使用图形界面是最简单的(我推荐 mobaXTerm 它有 ssh、scp、ftp、远程桌面等等)但是如果你是在命令行上设置的,我会推荐 cd'ing进入包含源文件夹的目录,然后 scp -r yourFolder username@server:/path/to/dir -r 表示要在目录上使用递归

【讨论】:

下载了那个 mobaXTerm,结果发现它有病毒。搞砸了一些对我有好处的东西 @Damien 那么你没有从我提供的网站下载它【参考方案7】:

驱动器号可以在源中使用

scp /c/path/to/file.txt user@server:/dir1/file.txt

【讨论】:

cp: cannot stat ‘/c/Users/xxx/Documents/rocket.chat/priv-key.ppk’: No such file or directory '/drives/c/Users/xxx/Documents/rocket.chat/priv-key.pp" 将起作用

以上是关于使用 scp 将本地文件从 Windows 复制到远程服务器 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

我想要在Linux环境下远程从windows下载一个文件到本地,我使用ftp和scp都不好用,求大神指点。

将一个Linux系统中的文件或文件夹复制到另一台Linux服务器上(scp的使用)

在Windows上使用批处理从远程linux服务器上复制文件到本地

scp文件传输

linux文件拷贝到其他机器

Linux 的 scp 命令详解