【问题标题】:PyCharm: Configuring multi-hop remote Interpreters via SSHPyCharm:通过 SSH 配置多跳远程解释器
【发布时间】:2016-10-16 02:40:01
【问题描述】:

要连接到我办公室的计算机,我需要运行 ssh 两次。首先连接到 host-1,然后从 host-1 连接到 host-2,每个都有不同的凭据。但是 Pycharm 中的配置菜单只接受一个 ssh 隧道。

Configure Remote Python Interpreter dialog box

有没有办法设置多跳 ssh 以从本地访问主机上的解释器和数据文件?

【问题讨论】:

    标签: python ssh pycharm ssh-tunnel


    【解决方案1】:

    您可以在 ssh 上使用端口转发。

    1。打开终端并运行:

    在您的本地系统上:

    ssh -L 6000:<target_server_ip>:22 <proxy_server_user>@<proxy_server_ip>
    

    您现在应该已连接到 代理。您可以将 6000 替换为任何端口。

    2。 (可选)测试

    现在您可以通过 ssh 进入另一个终端上的 target 服务器:

    ssh -p 6000 <target_server_user>@localhost
    

    3。配置 PyCharm

    切记不要关闭第一个终端!

    PyCharm 也是如此。只需使用以下配置通过 ssh 设置远程解释器连接:

    • 主机:本地主机
    • 端口:6000
    • 用户:target_server_user

    【讨论】:

    • 我试过了,但出现以下错误:Could not list the contents of "sftp://127.0.0.1:9999/" because it is not a folder
    • 如果从 b 到 c 的连接是通过 ssh 反向隧道建立的呢?
    • 检查 ~/.ssh/known_hosts 并删除任何导致问题的主机
    • 您的解决方案有效。但是,当我在第 2 步中 ssh 进入目标服务器时,它总是需要密码。有没有办法让它无密码?
    • @ThangM.Pham 您是否尝试将您的公共 ssh rsa 密钥复制到服务器?
    【解决方案2】:

    PyCharm 似乎也解析了本地 .ssh/config。

    如果你已经在那里配置了 ssh 跳跃,你可以在你的 pycharm ssh-config 中指定目标服务器。

    ~/.ssh/config (source)

    Host bastion
       Hostname bastion.domain.com
       Port 2222 # a non-standard port is a good idea
       User ironicbadger
    
    Host servera
       Hostname servera.lan.local
       User servera-user
       ProxyCommand ssh bastion -W %h:%p
    

    在pycharm中: 主机servera,用户名server-user

    【讨论】:

    • 如果您已经设置了 ssh 配置文件,此解决方案比公认的答案要好得多。
    • this blog post,在“设置 PyCharm” 部分,他们也解释了相同的设置。您还需要做的另一件事是将“身份验证类型”设置为“OpenSSH 配置和身份验证代理”。
    • 有人知道如何在 Windows 上实现这一点吗?
    • @mkohler 这也适用于 Windows (10+)
    【解决方案3】:

    对于使用 ssh 版本 7.3 或更高版本的用户,可以使用 ProxyJump 参数简化此操作。

    Host bastion
       Hostname bastion.domain.com
       User bastion-user
    
    Host servera
       Hostname servera.lan.local
       User servera-user
       ProxyJump bastion
    

    【讨论】:

      猜你喜欢
      • 2019-03-30
      • 2013-09-07
      • 2015-02-12
      • 2021-12-12
      • 2019-09-29
      • 2019-01-16
      • 1970-01-01
      • 2019-04-13
      • 2017-07-21
      相关资源
      最近更新 更多