在登录到远程并且不知道本地 IP 地址的情况下,是否可以通过 SCP 从远程传输到本地?

在登录到远程并且不知道本地 IP 地址的情况下,是否可以通过 SCP 从远程传输到本地?

我经常发现自己想将文件从远程终端会话复制到本地计算机。通常我会退出远程会话并调用 scp 传输从本地将文件从远程复制到本地。但这感觉有点冗长。我想在通过 SSH 登录到远程时传输文件以节省时间。我的本地机器从动态 IP 范围连接到互联网,因此我不太确定如何远程连接到它。但是,由于远程会话源自我的笔记本电脑,因此 scp 中肯定有一个快捷方式可以返回我的笔记本电脑……对吗?

答案1

您可以使用SSH 隧道为了这。

使用隧道,您可以将 TCP 端口从本地计算机转发到远程计算机,或从远程计算机转发到本地计算机。我经常使用它来将 SMTP 或 IMAP 端口从防火墙后面的远程计算机转发到本地计算机(然后在本地访问服务,就像它们在本地运行一样)。

要将端口 22(SSH)从本地计算机转发到远程计算机,请尝试以下操作:

ssh -R12345:localhost:22 yourremoteuser@remotemachine

(注意,localhost 指的是远程机器的本地名称)

运行此命令后,你应该能够使用以下命令通过 ssh 返回主页:

ssh -p12345 [email protected]

当使用 scp 时,您可以执行以下操作(scp 中大写的 P 表示端口转发):

scp -P12345 filename 127.0.0.1:/tmp/filename

另一个方向(从远程到本地)的端口转发使用 -L 而不是 -R。

上述命令假设您正在使用终端 ssh 客户端。图形客户端(如适用于 Windows 的 PuTTY)也支持隧道

答案2

在远程机器的命令行中尝试以下命令,您可能需要在路由器上启用端口转发。

scp <file on remote machine> ${SSH_CLIENT%% *}:<directory on local machine>

来源:轻松将文件 scp 回你正在连接的主机(commandlinefu.com)

答案3

或许

zssh (Zmodem SSH) 是一个使用安全 shell (ssh) 以交互方式将文件传输到远程计算机的程序。它旨在成为 scp 的便捷替代品,允许传输文件而无需打开另一个会话并重新验证身份。

zssh 是 ssh 的交互式包装器

它使用了 zmodem 文件传输的古老的 rz、sz 实现。

答案4

一种解决方案是暂停本地计算机上的 ssh 会话,在本地计算机上执行复制,然后从上次中断的地方恢复 ssh 会话。

例如,假设我连接到我的用户@远程,我想复制文件哈哈.txt到我的本地计算机。首先,我想在本地计算机上暂停 ssh。通常,您会使用Ctrl-Z来暂停,但这在 ssh 中不起作用,因为它将被发送到远程 shell。相反,您必须使用 ssh 转义序列Enter~。因此,要暂停 ssh,请按Enter~ Ctrl- Z。现在您可以在本地计算机上运行命令,并且可以执行

user@localmachine:~$ scp user@remote:/path-to-file/lol.txt /dest-path/lol.txt

复制文件然后返回到 ssh 你离开的位置

user@localmachine:~$ fg

相关内容