【问题标题】:Connected to ssh session via my browser. How can I access my local files through the browser?通过我的浏览器连接到 ssh 会话。如何通过浏览器访问我的本地文件?
【发布时间】:2015-10-01 20:28:16
【问题描述】:

我已使用ssh 连接到地址为“abc.def.com”的专用网络上的虚拟机,并且在该虚拟机上有一个托管 Python Web 应用程序(IPython Notebook)的应用程序,我可以通过以下方式访问它将我的本地浏览器指向“abc.def.com:7777”。

从该网络应用程序中,我可以通过在它们前面加上“!”来调用 shell 命令,例如!ls -lt 将列出 VM 当前工作目录中的文件。但由于我使用的是我自己的笔记本电脑的浏览器,我想我也应该能够在我的本地文件上运行 shell 命令。我该怎么做?

如果这不可能,我可以从网络应用程序中运行什么 Python/shell 命令来自动获取我的笔记本电脑的 IP 地址以使用 scp 之类的东西?我知道如何获取我的 IP 地址,但我想创建一个程序,它会自动为使用它的人启用 scp。

【问题讨论】:

  • 你想要什么?创建一个可以安装的网站/应用程序(使用 python)并将 scp 启用到正在运行的主机?
  • 我想要一个 IPython 函数“def upload('/path/from/local', '/path/on/remote')”,它将本地文件上传到远程服务器上的路径。
  • 我不知道 IPython Notebook 或您正在使用的这个应用程序,但对于在服务器(甚至本地机器)上运行的应用程序来说,不太可能(实际上不可能)直接通过浏览器访问本地文件。

标签: python shell ssh ipython


【解决方案1】:

您有 ssh 访问权限,因此您可以可能编写一个 python 函数,让您通过 scp 使用 ssh 进行通信的安全复制命令传输文件。如果您与服务器交换密钥,则不必输入密码,所以从这个角度来看,我认为没有问题。问题是您是否有一个可以从服务器访问的本地计算机的地址。

我整天在笔记本电脑上使用各种遥控器,从笔记本电脑到服务器,我可以拥有这个功能:

 def scp_to_server(address, local_file, remote_file):
      subprocess.call(['scp',local_file,"myusername@{}:{}".format(address, remote_file)])

如果路径正确,我有权复制文件,并且我的本地计算机的id_rsa.pub 密钥位于远程的~/.ssh/authorized_keys 文件中,这会将文件从我的本地计算机复制到远程。

我无法启动从远程到本地计算机的安全副本,但是因为我没有可以从远程“看到”的地址访问本地计算机。

如果我在笔记本电脑上打开终端并运行hostname,我看到mylaptop.local,在远程我看到remoteserver@where.i.work.edu,但第一个是本地地址,我可以从家里局域网上的其他机器看到它, (因为我已经配置了)但我无法从遥控器看到mylaptop.local。我知道有一种方法可以配置它,这样我就可以从任何地方在家中找到我的笔记本电脑,但我从来不需要这样做(因为我随身携带笔记本电脑)所以我无法帮助你。我认为还有更多的障碍需要克服。

您可以在本地计算机上实现上述功能并以这种方式传输文件。

【讨论】:

    猜你喜欢
    • 2022-10-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-14
    • 1970-01-01
    • 2016-07-16
    相关资源
    最近更新 更多