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
    • 最新
    • 标签
主页 / server / 问题 / 898173
Accepted
blueFast
blueFast
Asked: 2018-02-22 02:23:14 +0800 CST2018-02-22 02:23:14 +0800 CST 2018-02-22 02:23:14 +0800 CST

如何通过 ssh 连接到我无法直接访问的服务器?

  • 772

语境

我将 Ubuntu Desktop 作为我的主要机器运行,我将其称为 D。我想通过 ssh 连接到服务器 S,但防火墙阻止了我。

我可以通过非常繁琐的路径访问服务器 S,其中涉及 Windows 虚拟机和PuTTY。这使得使用此服务器非常烦人:完全不同的环境,复制/粘贴不起作用,连接到桌面时我无法正确使用桌面(Alt-Tab 被虚拟机破坏)等

我已经验证我可以从服务器 S SSH 到我的台式机 D(与我需要的相反)。

我可以从服务器以某种方式启动“端口转发”或类似的东西,以便我可以从我的桌面 ssh 到服务器吗?

ssh
  • 3 3 个回答
  • 3191 Views

3 个回答

  • Voted
  1. Best Answer
    Khaled
    2018-02-22T02:29:24+08:002018-02-22T02:29:24+08:00

    您可以使用以下命令设置从远程服务器到本地计算机的 SSH 隧道:

    $ ssh -f -N -R 1234:localhost:22 user@your_machine_ip
    

    设置隧道后,您可以使用以下命令简单地 ssh 到远程服务器:

    $ ssh -p 1234 user@localhost
    

    请注意,您需要为自动登录设置 ssh 密钥(无密码提示)。如果您想以交互方式创建 SSH 隧道,您可以删除 options -f -N。欲了解更多信息,man ssh.

    • 32
  2. Boris the Spider
    2018-02-23T01:33:43+08:002018-02-23T01:33:43+08:00

    如果您正在运行较新版本的 OpenSSH(7.3+),那么您可以使用ProxyJump它神奇地将所有东西烘烤在一起:

    ssh -J windows_machine remote_server
    

    你~/.ssh/config看起来像:

    Host remote_server
            HostName remote_server
            ProxyJump windows_machine
            User myname
    

    ProxyJump支持完整的 SSH 语法,所以如果你jim打开windows_server并且它使用 ssh 的端口2222。remote_server是在 IP192.168.0.110从那windows_server你可以写:

    Host remote_server
            HostName 192.168.0.110
            ProxyJump jim@windows_machine:2222
            User myname
    

    仍然只是跑到ssh remote_server那里。


    如果您正在运行旧版本的 SSH,请使用ProxyCommand - 这允许您告诉 SSH 在运行实际的 SSH 命令之前先运行命令以建立代理连接。

    ssh -o ProxyCommand='ssh -W %h:%p windows_machine' remote_server
    

    这使用了 SSH -W选项,它是更神秘的netcat 语法的简写。

    请注意,当您运行时,ssh remote_server您现在windows_machine需要确保使用remove_server 来自跳转框的 IP,而不是来自您机器的 IP - 这些很可能是相同的。

    然后,您可以将此指令添加到您的~/.ssh/config文件中:

    Host remote_server
      HostName remote_server
      User myname
      ProxyCommand ssh -W %h:%p windows_machine
    

    这意味着如果remote_server 是从那以后看到的另一台机器,windows_machine您可以将其放入配置中并仍然使用ssh remote_server.

    • 5
  3. Solarflare
    2018-02-23T01:00:21+08:002018-02-23T01:00:21+08:00

    与其试图规避事情并创建一个复杂的路径,你不能只要求允许从桌面到服务器的 SSH 吗?如果您需要它并且您应该访问服务器,我看不出您为什么会拒绝该请求。

    • 1

相关问题

  • 如何最好地设置 ssh 隧道以访问远程网络 (Linux)

  • SSH 和重定向

  • 通过 SSH 会话使用 NET USER 命令拒绝访问

  • SSH 服务器零日漏洞利用 - 保护自己的建议

  • ubuntu apt-get upgrade - 如何在 shell 中单击确定?

Sidebar

Stats

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

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

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

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve