【问题标题】:How to add remote interpreter via ipv6 in Pycharm?如何在 Pycharm 中通过 ipv6 添加远程解释器?
【发布时间】:2017-07-21 14:53:44
【问题描述】:

我的服务器只有一个ipv6地址,我的电脑可以通过这个地址直接ssh到它。但是当我尝试在 Pycharm 中的这台服务器上添加远程解释器时,它会在看到 ipv6 地址时告诉我SFTP host is invalid

我怎样才能让它工作?谢谢!

更新:添加括号 [2001:da8:...] 有助于通过主机语法检查。但是现在单击“确定”后,Pycharm 告诉我“java.net.SocketException:协议族不可用”。这个怎么过?

【问题讨论】:

  • 您是否从命令行检查过 ssh 和 sftp 是否与 IPv6 地址一起工作?
  • @PenguinBrian 是的,ssh -6 the_ipv6_address 工作正常。但是 Pycharm 说它不是一个有效的地址,甚至不让我点击 OK 尝试连接它。

标签: pycharm ipv6 remote-debugging


【解决方案1】:

如果错误来自 PyCharm(而不是来自 ssh),我建议在 ~/.ssh/config 中创建一个别名,例如:

Host myipv6host
HostName 2001:da8:201:1146:226:b9ff:....

这样你就可以告诉 pycharm 连接到 myipv6host 并且它永远不需要看到 ipv6 地址。

【讨论】:

    【解决方案2】:

    我终于让它工作了。

    首先,有效的 IPV6 SFTP 地址必须用括号括起来。也就是说,你应该写[2001:da8:201:1146:226:b9ff:....],而不是2001:da8:201:1146:226:b9ff:....

    其次,如果你这样做了,你会发现 Pycharm 告诉你“java.net.SocketException:协议族不可用”并拒绝连接。这是在 JDK 1.7 下运行的 Pycharm 的问题(是的,Pycharm 是基于 Java 的)。解决这个问题:

    1. 打开帮助 |编辑自定义虚拟机选项
    2. 在其中添加 -Djava.net.preferIPv6Addresses=true。您可能还想删除-Djava.net.preferIPv4Addresses=true,但我不确定这是否重要。
    3. 重启 Pycharm。

    更多信息请看这里:https://intellij-support.jetbrains.com/hc/en-us/articles/207241215-Network-connectivity-issues-when-running-under-Java-1-7

    【讨论】:

    • 我不得不删除-Djava.net.preferIPv4Addresses=true,这两个键都不起作用。删除后,这个解决方案也对我有用。
    • 更改这些参数后,我发现 SQLite 数据库驱动坏了,说类似java.rmi.ConnectException: Connection refused to host: ::1
    • 对于 PyCharm 2019.2 pro,ipv4 选项的命名略有不同: -Djava.net.preferIPv4Stack=true ;用 -Djava.net.preferIPv6Addresses=true 替换它解决了这个问题。
    • 注意:在 PyCharm 2019.2 pro 上启用 ipv6 选项可能会导致副作用,例如 PostgreSQL - postgres@localhost java.net.ConnectException: Connection denied (Connection denied) if connected to a Datasource via jdbc .因此,最好保留并“注释掉” ipv4 选项,以便在必要时将其恢复为 。禁用或“注释掉”一个 vm 选项可以通过在选项前面加上 # 来实现。每次更改 vm 选项时都需要重新启动 pyCharm。
    猜你喜欢
    • 2015-09-01
    • 2016-10-16
    • 2018-04-25
    • 1970-01-01
    • 2013-09-07
    • 2015-02-12
    • 2015-12-22
    • 2019-09-29
    • 1970-01-01
    相关资源
    最近更新 更多