我经常发现自己想将文件从远程终端会话复制到我的本地机器。通常我退出远程会话并从本地调用 scp 传输以将文件从远程复制到本地。但这感觉有点啰嗦。我想在通过 SSH 登录远程时传输文件以节省时间。我的本地机器从动态 IP 范围连接到互联网,所以我不太确定如何远程连接到它。但是可以肯定的是,由于远程会话来自我的笔记本电脑,因此 scp 中必须有一个快捷方式才能回到我的笔记本电脑......对吗?
小智 23
您可以为此使用SSH 隧道。
使用隧道,您可以将 TCP 端口从本地计算机转发到远程计算机,或从远程计算机转发到本地计算机。我经常使用它来将 SMTP 或 IMAP 端口从防火墙后面的远程机器转发到我的本地机器(然后在本地访问服务,就好像它们在本地运行一样)。
要将端口 22 (SSH) 从本地计算机转发到远程计算机,请尝试以下操作:
ssh -R12345:localhost:22 yourremoteuser@remotemachine
Run Code Online (Sandbox Code Playgroud)
(注意localhost指的是远程机器的本地名称)
运行此程序后,您应该可以使用以下命令 ssh 返回家中:
ssh -p12345 yourlocaluser@127.0.0.1
Run Code Online (Sandbox Code Playgroud)
使用 scp 时,您会执行以下操作(scp 有一个大写的 P 用于端口转发):
scp -P12345 filename 127.0.0.1:/tmp/filename
Run Code Online (Sandbox Code Playgroud)
另一个方向(从远程到本地)的端口转发使用 -L 而不是 -R。
上述命令假设您使用的是终端 ssh 客户端。图形客户端,如适用于 Windows 的 PuTTY,也支持隧道
小智 7
在远程机器的命令行中尝试以下操作,您可能需要在路由器上启用端口转发。
scp <file on remote machine> ${SSH_CLIENT%% *}:<directory on local machine>
Run Code Online (Sandbox Code Playgroud)
来源:轻松将文件 scp 发送回您正在连接的主机(commandlinefu.com)
| 归档时间: |
|
| 查看次数: |
31450 次 |
| 最近记录: |