通过SSH连接反向SCP


17

当我在笔记本电脑上时,我经常需要来自某些服务器的文件。但是,如果我不知道该文件在哪里,则必须ssh进入服务器,四处看看exit,然后再查看scp server:file .。如果我使用的台式机和服务器都具有静态IP,则可以仅对文件进行反向(scp desktop:~ file)SCP ,但不能对笔记本电脑执行此操作。有没有什么好的方法可以通过SSH连接向SCP反向发送文件?这样我通过SSH连接的计算机会将文件向后发送给客户端?


为什么不使用mDNS?
伊格纳西奥·巴斯克斯

1
我相信这个问题已经在这里得到正确的回答:unix.stackexchange.com/a/2869
shellster 2012年

Answers:


20

使用SFTP会容易得多,它是SSH的扩展,它支持比SCP更复杂的文件操作。几乎所有现代Unix和Linux发行版都支持它。要使用它,只需运行以下命令以连接到服务器:

sftp server

然后,您可以使用lscd命令浏览并查找所需的文件。找到它后,使用get命令下载它。例如,要将file.txt服务器上当前的工作目录下载到本地计算机上的当前工作目录,只需运行:

get file.txt

/home/pavpanchekha/textfiles/file.txt在服务器~/textfiles/上下载到本地计算机上,请运行:

get /home/pavpanchekha/textfiles/file.txt ~/textfiles/

相反,您也可以通过这种方式上传文件。要从file.txt本地当前工作目录上载到服务器的当前工作目录,请键入:

put file.txt

您也可以像这样使用每个路径的完整路径get

put ~/textfiles/file.txt /home/pavpanchekha/textfiles/file.txt

有关可用SFTP命令的完整列表,只需helpsftp>提示符下运行。


1
太酷了,谢谢。如果我已经建立SSH连接,是否有任何方法可以反向启动它?否则,我发现自己在某处ssh'ing,意识到我要传输文件,退出SSH连接,建立SFTP连接,退出,然后返回SSH。
pavpanchekha

2
@pav:SSH_CLIENT环境变量包含连接主机的IP地址以及其他信息。您可以使用它来创建外壳程序别名,以轻松地通过SFTP返回原始主机。只需将此行添加到~/.bashrc服务器上:alias sftpback="sftp $(echo $SSH_CLIENT | awk '{print $1}')" 然后从SSH断开连接并重新连接,以使更改生效,或者像执行命令一样运行该命令,以使其立即生效。从那里开始,sftpback无论是哪个客户端,您都可以将SFTP 运行回到与之连接的客户端。
补丁

这是最好的!感谢您从NANO(在线编辑文件)中拯救我,它使过程变得如此简单。
Mohsin

0

控制台文件管理器Midnight Commander(mc)具有VFS系统,该系统允许SFTP连接/文件管理到远程服务器。它还可以在Windows的Cygwin中运行。默认界面显示两个独立的面板。我们可以在其中一个目录中打开SFTP远程目录,然后轻松地与另一个面板之间进行文件传输。包括带有语法高亮显示的文件编辑器/查看器(mcedit)。

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.