![如何使用 SSH 将远程文件传输到本地](https://linux22.com/image/1330503/%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8%20SSH%20%E5%B0%86%E8%BF%9C%E7%A8%8B%E6%96%87%E4%BB%B6%E4%BC%A0%E8%BE%93%E5%88%B0%E6%9C%AC%E5%9C%B0.png)
我可以使用什么终端命令将目录从远程计算机(linux)传输到本地计算机(mac)?最重要的是,我想在通过 SSH 进入远程机器时从命令行执行此操作。我知道如何在本地机器命令行上使用 SCP,但我不知道如何在远程机器上使用它(也不知道我的本地路径是什么)。
答案1
sshd
如果您尚未执行此操作,请在本地计算机上启动。然后启动第二从本地计算机到远程计算机的会话:
ssh -R 2222:127.0.0.1:22 user@remote
这会将远程端口 2222 转发到sshd
本地计算机上监听的 127.0.0.1,从而创建一个。然后在远程计算机上reverse tunnel
运行:scp
scp -P2222 file 127.0.0.1:/path/
答案2
你也可以执行相反的操作,将文件从远程计算机抓取到本地计算机,
ssh -L 2222:[email protected]:22 [email protected] -N &
scp -P 2222 127.0.0.1:/path/to/file/on/remote/machine.diff /tmp
ssh 命令设置了从 localhost:2222 到面向网络的服务器 remoteserver.com 后面的远程计算机 192.168.1.37 的隧道。第二条命令允许您将其复制到本地。
一些这里有很好的例子和提示,以及如何在 ~/.ssh/config 中配置它以实现自动化。
答案3
如果你本地的路由器/防火墙为你提供了一个私有 IP 地址,你需要配置路由器以将端口 NAT 映射到本地端口 22。然后,你就可以通过访问你的公共 IP 地址在您选择的任何端口上(您可以直接映射端口 22,但我个人通常建议避免这样做,因为标准服务器端口是恶意软件试图找到进入方式的常见目标)。