当远程登录时,我如何引用本地计算机进行scp传输?

17

这一定是一个非常简单的问题,但我正在尝试将一个文件从远程服务器移动到我的本地电脑,同时登录到远程服务器(通过ssh)。

所有的指南都说只需使用以下命令:

scp name@remote:/path/to/file local/path/to/file

但就我所理解的来说,那是我从本地计算机使用的。从远程计算机上,我想要使用类似这样的东西:

scp /path/to/file my_local_computer:/local/path/to/file

但(如果我用的是正确的话)我如何知道要输入什么来代替my_local_computer?

谢谢!


1
谢谢。我已经“尝试”了一段时间,并搜索了很多手册和论坛。 - Asbestos
3个回答

11
您可以通过检查环境变量SSH_CONNECTION和/或SSH_CLIENT自动确定您当前登录的位置。例如,SSH_CONNECTION显示客户端地址,客户端上的出站端口,服务器地址和服务器上的入站端口。请参见man ssh中的ENVIRONMENT部分。
因此,如果您想从服务器复制文件到您当前从其登录的客户端,请使用以下代码(它通过获取SSH_CONNECTION的第一部分来推断出客户端IP):
scp /path/to/file $(echo $SSH_CONNECTION | cut -f 1 -d ' '):/local/path/to/file

安德烈亚斯


3
你走在正确的道路上!scp的man页面应该会告诉你如何做你想做的事情:http://linux.die.net/man/1/scp 如果你不理解man页面,那么我将试图指导你:
1. 如果你想将本地机器上的文件推送到远程机器上 scp /path/to/local/file testuser@remote-host:/path/to/where/you/want/to/put/file 2. 如果你想从远程机器上拉取文件到本地机器上 scp testuser@remote-host:/path/to/file/you/want/to/pull /path/on/local/machine/to/place/file 3. 如果你已经登录到远程机器,并希望将文件推送到本地机器(假设你有能力首先将文件scp到本地机器) scp /path/on/remote/machine/to/file testuser@local-host:/path/on/local/machine/to/put/file 现在,要确定你的本地主机地址是什么,你可以检查本地机器的IP地址,或者如果你的本地机器已经提供了DNS条目,你可以使用它。
例如,scp ~/myfile testuser@192.168.1.10:/home/testuser/myfile 或 scp ~/myfile testuser@my-host:/home/testuser/myfile。
对于DNS条目,只要你在正确配置的网络上,你就不需要完全限定域。否则,你需要做类似testuser@my-host.example.com:/home/testuser/myfile这样的事情。

1
我有一个问题:如何从具有本地IP的机器进行scp。我已经ssh三次以访问此机器。是否可以编写类似于此的内容:scp myusername1@85.185.211.20:myusername1@85.185.211.21:myusername2@192.168.20.18:/directory/to/the/file /mylocal/address。请注意,有两个机器的用户名。 - Abolfazl

0
也许你可以围绕这个构建一个解决方案:
who | grep $USER

当在远程计算机上运行时,应该给出一个提示,表明你连接的来源。


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