PyCharm:通过 SSH 配置多跳远程解释器

Posted

技术标签:

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

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

Configure Remote Python Interpreter dialog box

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

【问题讨论】:

【参考方案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

【讨论】:

以上是关于PyCharm:通过 SSH 配置多跳远程解释器的主要内容,如果未能解决你的问题,请参考以下文章

PowerShell启用多跳远程控制

PyCharm 配置远程python解释器

个人学习记录pycharm配置ssh远程连接服务器

PyCharm 配置远程python解释器和在本地修改服务器代码

Pycharm docker-compose解释器不加载库

PyCharm SSH 隧道通过本地 ssh 配置 (~/.ssh/config)