我通过 ssh(linux)或 putty(windows)登录到远程服务器。我想从远程 bash 提示符将文件复制回我的原始计算机(因为方便)。我知道我可以在我的计算机上启动 FileZilla 或 WinSCP 并复制文件,但我想知道如何从远程 bash 提示符执行此操作。
我知道我可以使用另一个 ssh 链接通过 pscp 复制文件:
pscp server.file localuser@local:/local_path
但是如果客户端没有运行 openssh 服务器,则无法使用。
我发现我的服务器有一些变量,如 SSH_CLIENT、SSH_CONNECTION 等。是否可以使用这些信息来编写这样的命令?
copy_from_server server.file local.file
其中 server.file 是位于服务器上的文件(copy_from_server 运行的 bash 提示符的本地文件),而 local.file 是应复制文件的客户端计算机上的目标位置。
我想要一个适用于 Windows 和 Linux 的解决方案,但我也愿意接受仅适用于 Linux 或仅适用于 Windows 的解决方案。
编辑: 类似问题:
答案1
在您的ssh
会话中(不是PuTTY
)按下Enter~C即可在本地机器上输入命令行。
在 shell 中,您可以通过在命令前加上前缀来运行该命令!
:
$ ssh> !scp <user@server:file> <local path>
一旦文件被复制,命令提示符将退出,您将返回到会话,而ssh
无需重新输入您的凭据。
您需要PermitLocalCommand=yes
(/etc/ssh_config
客户端)才能使其工作。
答案2
您可以使用 rsync 来实现这一点。在互联网上查找 rsync 命令的示例。以下是示例:
rsync -av -e ssh /var/www/your-site.com/ VPS_IP:/var/www/your-site.com/
我是在阅读有关 Wordpress 迁移的文章时发现这一点的: http://bit.ly/1pGp5cw