无法使用scp解析主机名

16

我正在使用Putty在Windows机器上通过SSH访问Ubuntu服务器,并尝试将单个文件下载到本地Windows机器。

我的Windows用户名是Mark,我的主机名按照cmd是Marks,我正在尝试在远程服务器上运行以下命令

scp backup.sql mark@marks:desktop

我试图输入我认为的IP地址,但连接超时,并出现“无法解析主机名”的错误提示。


1
即使我是从服务器发出命令,也是这样吗? - Mark
我原本以为通过 ssh 发出命令与在服务器上发出命令是一样的,显然我错了。我的问题的第一行正是我想做的。 - Mark
谢谢帮助,我会尝试在命令中包含服务器的主机名或IP地址。 - Mark
使用SCP时,“from”总是在相对于您发出命令的位置之前,跟在“to”之前。我想到一个信封(从左到右,从上到下阅读),这是一种助记符,可以帮助我记住。 - binarysubstrate
2
我遇到了类似的问题,但是解决方案是在文件名前添加./ - Pablo Bianchi
显示剩余4条评论
4个回答

9

命令的语法如下,相对于您发布命令的位置:

scp user@host_from:location/file user@host_to:location/file

当然,如果您在本地,可以省略user@host前缀:

scp local_file me@host_to:~/local_file

方向始终是从"from"到"to",这是相对于您发布命令的位置。


那么,通过SSH连接到服务器是否意味着我是本地的,因此可以使用第二种语法? - Mark
1
如果你要从服务器传输文件到本地机器,通常情况下你无法将文件“推送”给自己,例如当你通过互联网连接且没有设置入站连接时。因此,你只能“拉取”文件。例如,从我在家中的本地机器连接到互联网上的服务器,我会使用scp myid@remote_server:/original_file ~/new_file。 - binarysubstrate
谢谢您提供的语法,我相信它是正确的,但连接一直超时,所以我按照上面的建议下载了WinSCP,立即解决了问题。 - Mark
winscp 只是一个 GUI,所以可能有某个地方打错了字。也就是说,如果 winscp 可以工作,那么从命令行使用 SCP 也会工作。 - binarysubstrate

9

binarysubstrate 的语法是正确的。问题是,如果 OP 在 scp 命令的“to”部分中输入他的 Windows 客户端的名称(或地址),由于以下几个原因,它可能不起作用:

  1. 他的 Windows 机器可能没有可解析的 FQDN,
  2. 他的 Windows 机器可能在 NAT 防火墙后面,而该防火墙未设置端口转发 SSH 请求,
  3. 他很可能没有在他的 Windows 机器上运行 SSH 守护程序。

要简单地将文件从远程服务器复制到 Windows 客户端,我建议使用WinSCP


你不会使用你的家用电脑作为目标参数,因为你所指定的原因。只需将远程服务器指定为“from”参数:scp my_id@remote_server:/orig_file /new_file - binarysubstrate
二进制替代,他提到他是在Windows机器上进行这个操作的。除了Cygwin之外,我不知道是否有适用于Windows的命令行版本的scp。你知道还有其他的吗? - mti2935
是的,实际上有一个SCP PuTTY客户端。虽然我必须说我更喜欢Cygwin,它在各个方面都出奇的好。 - binarysubstrate

0
我遇到了同样的问题,我所做的是退回一步,然后再次运行命令。
所以,如果命令是这样的:
scp the_file me@host_to:~/
我改成了退回目录:
cd ..
然后
scp ./the_file me@host_to:~/
就可以正常工作了。

0

您尝试从服务器ping您的计算机名称吗?请尝试将计算机名称替换为IP地址,或将计算机名称添加到服务器主机配置文件中。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接