AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / computer / 问题 / 1433746
Accepted
Fattie
Fattie
Asked: 2019-05-07 12:43:21 +0800 CST2019-05-07 12:43:21 +0800 CST 2019-05-07 12:43:21 +0800 CST

有没有办法将 scp 到“这台”机器?(“父”机器?)

  • 772

假设我在 Mac(或任何 unix-ish box)上打开了一个终端

fattie$

我当然可以这样做:

fattie$ scp -i key.pem [email protected]:file.js .

它将 file.js 从我的 AWS 服务器复制到 Mac。到目前为止一切都很好。

另一天,我这样做

fattie$ ssh -i key.pem [email protected]

我现在在 Mac 上的 shell 中,但是,我登录到 aws 机器上的 shell

ubuntu@ip-111-22-3-444:~$ 

都好。

如果我想将文件 file.js 传输回 Mac,当然你可以按照以下方式进行:

ubuntu@ip-111-22-3-444:~$ scp file.js [email protected]

没问题。

但。

如果您明白我的意思,我已经“融入”了 Mac。

ubuntu shell的parent shell(有这个概念吗??)确实是问题中的Mac。我什至在 Mac 上的正确目录中。

事实上,有什么方法可以告诉 scp - 或其他命令吗?- 复制自

  • 您所在的 shell(即示例中的 aws shell)

  • “你在本地的位置”,“父”外壳,示例中的 Mac?

也许像...

ubuntu@ip-111-22-3-444:~$ cat file.js > "the parent machine"/done.js

甚至只是

ubuntu@ip-111-22-3-444:~$ cp file.js "the parent machine"

... 如果你明白我的意思?

有没有办法到达“父”外壳?

(我猜,你可能会矫枉过正 usingnc但你必须先设置本地端!)

这样做通常会很方便。

shell scp
  • 2 2 个回答
  • 158 Views

2 个回答

  • Voted
  1. Best Answer
    user1686
    2019-05-07T13:04:46+08:002019-05-07T13:04:46+08:00

    是和不是。Shell(包括本地连接和 SSH 连接)执行堆栈操作,但通过 SSH 启动的远程 Shell无法访问本地运行的客户端。没有用于文件传输的反向隧道(有一个用于 ssh-agent,但仅此而已)。

    您可能能够从远程服务器通过 scp/sftp 返回到本地计算机,但它会作为一个完全独立的连接(堆栈中的另一个新层)——它对您所在的“当前文件夹”一无所知.

    因此,因为唯一的方法是建立新的 SSH 连接,显然这需要您的本地计算机首先运行 SSH 服务器 (sshd)。(幸运的是,与 nc 不同,sshd 只需要设置一次并永远运行。)

    如果您的计算机有公共 IP 地址,下一步就是从 Ubuntu 系统通过 SSH 返回您自己的 IP 地址(可以在 $SSH_CONNECTION 中找到)。如果客户端和服务器都有 IPv6,则可以使用。

    大多数 PC 没有公共 IP 地址,因此替代方法是使用 SSH 的-R“远程 TCP 转发”功能来建立反向通道——请注意,在这种情况下,它仍然是一个全新的 SSH 登录到您的计算机,它仍然没有对“父”外壳一无所知:

    MyMac$  pwd
    /Users/Fred/Documents/This/That
    MyMac$  ssh -R 12345:localhost:22 ubuntu.example.com
      ubuntu$  ssh -p 12345 localhost
        MyMac$  pwd
        /Users/Fred
        MyMac$  exit
      ubuntu$  scp -o Port=12345 file.json localhost:Documents/
    

    在此示例中,12345 是一个随机端口号,它将开始接受服务器上的连接,该连接将传送到本地计算机端口 22 上的 sshd。

    注意:在此示例中,-R 选项是在连接之前指定的,但如果您碰巧需要追溯它,您可以只打开第二个连接(这次使用 -R),隧道将在全球范围内可用。它不限于特定的外壳/连接。

    (或者,按键Enter ~ C应该弹出一个交互式提示,接受“-R 123 ...”作为输入并建立转发。)


    就个人而言,我建议直接通过 SFTP 连接到远程机器。然后您可以使用比较常规的“cd”和“ls”导航到该文件,然后使用“get”检索文件。

    默认的 OpenSSHsftp客户端不是很好,但工作正常;lftp是更好的选择之一。


    执行我所说的蹩脚方法是,只需将文件放在屏幕上。然后你就可以在本地机器上有效地拥有它:复制并粘贴到一个文件:)(我想到,可以编写一个具有此功能的终端应用程序的自定义版本:当你键入 cat f.txt > LOCAL/f.tx 它实际上只是捕获结果并将其保存到文本文件!!!嘿!) – Fattie 6 小时前

    是的,一些终端支持这个——它实际上是拨号系统和 BBS 时代的一个特性,被称为ZMODEM或XMODEM。

    要通过 ZMODEM 接收文件,首先要确保本地终端启用了文件传输功能(我认为它至少存在于 GNU 屏幕多路复用器中,尽管在现代终端中很少见),然后sz <file>在远程服务器上运行,你应该查看本地弹出的文件。

    似乎也有人在 iTerm2 中为 Zmodem编写了集成脚本。

    • 2
  2. Jim L.
    2019-05-07T14:41:34+08:002019-05-07T14:41:34+08:00

    @grawity 对于所述问题是正确的(并且赞成)。

    但是,如果您愿意在本地计算机上创建 SSH 服务器实例,并且本地计算机的 SSH 服务器可从主机访问,则blah可以使用此命令,即使不知道本地计算机的主机名或 IP 是什么,该命令也能正常工作。但是,如果您在非标准端口上运行 SSH,则您必须知道用户名,可能还需要知道端口号:

    $ scp file.js fattie@${SSH_CLIENT%% *}:done.js
    

    fattie您在本地 Mac 上的用户名在哪里。该命令行还假定您bash在blah.

    但同样,正如 grawity 指出的那样,您需要在 Mac 上运行 SSH,并且如果您的 Mac 在防火墙后面的专用 LAN 上,则必须将防火墙配置为将传入的 TCP 端口 22 传递给您的苹果电脑。此命令只是执行复制的快捷方式,您无需知道您的公共 IP 是什么,也无需使用某种动态 DNS。

    • 1

相关问题

  • 从 sudo su 运行命令

  • 如何在shell命令中的脚本中执行脚本

  • Atom 搞乱了 Emacs 文件中的格式

  • 如何仅将文件名显示为 cp 命令的输出?

  • 资源管理器侧面板中的桌面外壳快捷方式

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    Windows 照片查看器因为内存不足而无法运行?

    • 5 个回答
  • Marko Smith

    支持结束后如何激活 WindowsXP?

    • 6 个回答
  • Marko Smith

    远程桌面间歇性冻结

    • 7 个回答
  • Marko Smith

    Windows 10 服务称为 AarSvc_70f961。它是什么,我该如何禁用它?

    • 2 个回答
  • Marko Smith

    子网掩码 /32 是什么意思?

    • 6 个回答
  • Marko Smith

    鼠标指针在 Windows 中按下的箭头键上移动?

    • 1 个回答
  • Marko Smith

    VirtualBox 无法以 VERR_NEM_VM_CREATE_FAILED 启动

    • 8 个回答
  • Marko Smith

    应用程序不会出现在 MacBook 的摄像头和麦克风隐私设置中

    • 5 个回答
  • Marko Smith

    ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] 证书验证失败:无法获取本地颁发者证书 (_ssl.c:1056)

    • 4 个回答
  • Marko Smith

    我如何知道 Windows 安装在哪个驱动器上?

    • 6 个回答
  • Martin Hope
    Albin 支持结束后如何激活 WindowsXP? 2019-11-18 03:50:17 +0800 CST
  • Martin Hope
    fixer1234 “HTTPS Everywhere”仍然相关吗? 2019-10-27 18:06:25 +0800 CST
  • Martin Hope
    Kagaratsch Windows 10 删除大量小文件的速度非常慢。有什么办法可以加快速度吗? 2019-09-23 06:05:43 +0800 CST
  • Martin Hope
    andre_ss6 远程桌面间歇性冻结 2019-09-11 12:56:40 +0800 CST
  • Martin Hope
    Riley Carney 为什么在 URL 后面加一个点会删除登录信息? 2019-08-06 10:59:24 +0800 CST
  • Martin Hope
    zdimension 鼠标指针在 Windows 中按下的箭头键上移动? 2019-08-04 06:39:57 +0800 CST
  • Martin Hope
    Inter Sys Ctrl+C 和 Ctrl+V 是如何工作的? 2019-05-15 02:51:21 +0800 CST
  • Martin Hope
    jonsca 我所有的 Firefox 附加组件突然被禁用了,我该如何重新启用它们? 2019-05-04 17:58:52 +0800 CST
  • Martin Hope
    MCK 是否可以使用文本创建二维码? 2019-04-02 06:32:14 +0800 CST
  • Martin Hope
    SoniEx2 更改 git init 默认分支名称 2019-04-01 06:16:56 +0800 CST

热门标签

windows-10 linux windows microsoft-excel networking ubuntu worksheet-function bash command-line hard-drive

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve