gpt4 book ai didi

linux - 当我已经通过 ssh 连接到远程机器时,如何 scp 回到本地?

转载 作者:IT王子 更新时间:2023-10-29 00:17:41 26 4
gpt4 key购买 nike

我经常遇到这种情况:我进入远程服务器并运行一些程序,我想将它们的输出文件复制回我的本地机器。我所做的是记住远程机器上的文件路径,退出连接,然后 scp user@remote:filepath .

显然这不是最优的。我正在寻找的是一种让我在不退出连接的情况下将 scp 文件返回到本地计算机的方法。我做了一些搜索,几乎所有结果都告诉我如何从我已经知道的本地机器上执行 scp。

这可能吗?更妙的是,是否有可能不需要知道我本地计算机的 IP 地址?

最佳答案

假设您有一个 sshd 在您的本地计算机上运行,​​这是可能的,您不需要知道您的传出 IP 地址。如果启用了 SSH 端口转发,即使您已经打开了 ssh 连接,您也可以打开安全隧道,而无需终止它。

假设你有一个到某个服务器的 ssh 连接:

local $ ssh user@example.com
Password:
remote $ echo abc > abc.txt # now we have a file here

好的,现在我们需要将该文件复制回我们的本地服务器,并且出于某种原因我们不想打开新连接。好的,让我们通过按 Enter ~C(Enter,然后是波浪号,然后是大写 C)来获取 ssh 命令行:

ssh> help
Commands:
-L[bind_address:]port:host:hostport Request local forward
-R[bind_address:]port:host:hostport Request remote forward
-D[bind_address:]port Request dynamic forward
-KR[bind_address:]port Cancel remote forward

这就像常规的 -L/R/D 选项一样。我们需要 -R,所以我们再次点击 Enter ~C 并输入:

ssh> -R 127.0.0.1:2222:127.0.0.1:22
Forwarding port.

这里我们将远程服务器的端口 2222 转发到本地机器的端口 22(这里是您需要在端口 22 上启动本地 SSH 服务器的地方;如果它正在监听其他端口,请使用它而不是 22)。

现在只需在远程服务器上运行 scp 并将我们的文件复制到远程服务器的端口 2222,该端口映射到我们本地机器的端口 22(我们的本地 sshd 正在运行) ).

remote $ scp -P2222 abc.txt user@127.0.0.1:
user@127.0.0.1's password:
abc.txt 100% 4 0.0KB/s 00:00

我们完成了!

remote $ exit
logout
Connection to example.com closed.
local $ cat abc.txt
abc

棘手,但如果您真的不能从另一个终端运行scp,可能会有帮助。

关于linux - 当我已经通过 ssh 连接到远程机器时,如何 scp 回到本地?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25482099/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com