16

这一定是一个非常简单的问题,但我正在尝试将文件从远程服务器移动到我的本地计算机,同时登录到远程(通过 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 输入什么?

谢谢!

4

3 回答 3

9

您可以通过检查环境变量 SSH_CONNECTION 和/或 SSH_CLIENT 来自动确定您从哪里登录。例如 SSH_CONNECTION 显示客户端地址、客户端上的传出端口、服务器地址和服务器上的传入端口。参见环境部分man ssh

因此,如果您想将文件从服务器复制到您从中登录的客户端,则以下内容(通过获取 SSH_CONNECTION 的第一部分来推断客户端 IP)应该可以工作:

scp /path/to/file $(echo $SSH_CONNECTION | cut -f 1 -d ' '):/local/path/to/file

安德烈亚斯

于 2014-04-22T02:56:02.353 回答
3

你在正确的轨道上!scp 的手册页应该告诉你如何做你想做的事:http: //linux.die.net/man/1/scp

如果您无法理解手册页,那么我将尝试指导您:

  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 条目,您可以使用它。

IE,scp ~/myfile testuser@192.168.1.10:/home/testuser/myfile OR scp ~/myfile testuser@my-host:/home/testuser/myfile

对于 DNS 条目,如果您位于正确配置的网络上,则不需要完全限定的域。否则,您需要执行类似 testuser@my-host.example.com:/home/testuser/myfile 之类的操作

于 2013-08-29T20:21:13.250 回答
0

也许你可以围绕这个构建一个解决方案:

who | grep $USER

在远程计算机上运行时,它应该提示您连接表单的位置。

于 2013-08-29T18:44:38.830 回答