![当我通过 ssh 远程登录到服务器时,如何引用我的机器(客户端)?](https://linux22.com/image/603858/%E5%BD%93%E6%88%91%E9%80%9A%E8%BF%87%20ssh%20%E8%BF%9C%E7%A8%8B%E7%99%BB%E5%BD%95%E5%88%B0%E6%9C%8D%E5%8A%A1%E5%99%A8%E6%97%B6%EF%BC%8C%E5%A6%82%E4%BD%95%E5%BC%95%E7%94%A8%E6%88%91%E7%9A%84%E6%9C%BA%E5%99%A8%EF%BC%88%E5%AE%A2%E6%88%B7%E7%AB%AF%EF%BC%89%EF%BC%9F.png)
这种情况出现的频率令人惊讶:
我通过 ssh 连接到服务器或其他计算机。我想将一些文件 scp 或 rsync 回我的客户端计算机。问题是我位于防火墙后面,并且我的计算机上没有映射到端口 22 的端口。
如果我能以某种方式在 scp 或 rsync 命令中为连接的计算机设置别名,那就太好了,例如:
scp fileToBeTransferred LOCALMACHINE:~/temp/
我当前的流程是从本地计算机发出命令(而不是在 ssh 会话中)。如果能够从服务器发出 scp 命令,速度会快得多,因为我已经在正确的目录中,我可以使用文件完成功能,而且我的凭据已经过验证。
如果有什么区别的话,我的客户端机器几乎总是运行 Mountain Lion 的 Mac。
答案1
您可以通过到本地 ssh 端口的反向隧道实现此目的
连接到远程计算机时,使用-R选项:
ssh -R 10000:127.0.0.1:22 remoteuser@remotemachine
现在,远程端口 10000 已映射到您的本地端口 22,您可以从远程会话传输文件:
scp -P 10000 yourfile [email protected]:/path/to/target/