PyCharm远程开发配置流程
💭

PyCharm远程开发配置流程

Category
技术分享 Tech
Author
Huilin Zhang
Date
Aug 11, 2024

本地配置ssh

检查本地是否配置过ssh

Windows系统

  • 在终端PowerShell中输入ssh -V,显示 SSH 客户端的版本信息。如果你看到类似于 OpenSSH_for_Windows_8.1p1 的输出,说明 SSH 客户端已经配置好。如果你看到'ssh' 不是内部或外部命令,也不是可运行的程序或批处理文件,则说明 SSH 客户端可能没有安装或配置。
  • 前往文件夹C:\Users\your_username\.ssh(注意将your_username替换为你的用户名),查看是否有 configid_rsaid_rsa.pub 等文件。如果这些文件存在,则说明 SSH 配置已经存在。

Mac系统

通常 macOS 默认已安装SSH。
  • 在终端中输入ssh -V,显示SSH客户端的版本信息。如果你看到类似于OpenSSH_8.1p1 的输出,说明SSH客户端已经配置好。如果你看到command not found或类似的消息,则说明SSH客户端可能没有安装或配置。
  • 在终端中输入ls -la ~/.ssh/,会列出~/.ssh/目录中的所有文件。如果你看到configid_rsaid_rsa.pub等文件,说明SSH配置已经存在。

本地配置ssh

Windows系统

  1. 安装 OpenSSH 客户端(如果未安装):
      • 打开“设置”应用程序。
      • 转到“应用” > “可选功能”。
      • 如果未列出“OpenSSH 客户端”,点击“添加功能”,搜索“OpenSSH 客户端”并安装。
  1. 打开终端PowerShell,输入ssh-keygen -t rsa -b 4096 -C "your_email@example.com"生成密钥对,替换 "your_email@example.com" 为你的电子邮件地址。按提示操作:指定文件名:按 Enter 键接受默认文件名(/Users/your_username/.ssh/id_rsa);设置密码:按提示设置一个密码(可选)。
  1. 在终端中输入cat ~/.ssh/id_rsa.pub查看公钥内容。

Mac系统

  1. 在终端中输入ssh-keygen -t rsa -b 4096 -C "your_email@example.com"生成密钥对,替换 "your_email@example.com" 为你的电子邮件地址。按提示操作:指定文件名:按 Enter 键接受默认文件名(/Users/your_username/.ssh/id_rsa);设置密码:按提示设置一个密码(可选)。
  1. 在终端中输入cat ~/.ssh/id_rsa.pub查看公钥内容。

远程主机(Linux)配置ssh

检查远程主机是否配置过ssh

在终端中输入以下命令:如果以下检查都通过,说明 SSH 已正确配置。
  1. 检查 SSH 服务状态
    1. systemctl status ssh
      如果输出显示 active (running),则 SSH 服务正在运行。
  1. 检查 SSH 配置文件
    1. cat /etc/ssh/sshd_config
      如果文件存在且内容配置正确,则说明 SSH 已配置。
  1. 查看 SSH 端口
    1. grep Port /etc/ssh/sshd_config
      确保 SSH 使用默认端口(通常为 22)。
  1. 使用 netstat 或 ss 命令
    1. sudo netstat -tuln | grep :22
      或者
      sudo ss -tuln | grep :22
      检查 SSH 服务是否监听正确端口。

在远程主机(Linux)上配置ssh

若检查发现远程主机(Linux)上未配置过ssh,可按照以下步骤完成配置。
  1. 安装 OpenSSH Server
    1. 在终端中输入以下命令安装 SSH:
      sudo apt update(此命令非必须)
      sudo apt install openssh-server
      💡
      这一步可能因为网络连接问题而失败,需要多试几次。
  1. 启动并启用 SSH 服务
    1. 启动 SSH 服务:sudo systemctl start ssh
      设置开机自启动:sudo systemctl enable ssh
  1. 检查 SSH 服务状态
    1. 确认 SSH 服务正在运行:sudo systemctl status ssh
  1. 配置 SSH
    1. 编辑配置文件 /etc/ssh/sshd_config 以满足你的需求:sudo nano /etc/ssh/sshd_config
      • 确保端口设置为 Port 22 或其他你希望使用的端口。
      • 可以根据需要启用或禁用密码登录、设置允许的用户等。
  1. 重启 SSH 服务
    1. 修改配置后,重启服务以应用更改:sudo systemctl restart ssh
  1. 配置防火墙
    1. 如果使用防火墙,需要允许 SSH 流量:sudo ufw allow ssh
      或指定端口:sudo ufw allow 22/tcp

在终端通过ssh连接远程服务器

  1. 将本地的公钥添加到远程服务器中
      • 在本地终端输入ssh-copy-id username@host,将公钥复制到远程服务器。
      • 如果无法使用 ssh-copy-id,可以在本地终端输入cat ~/.ssh/id_rsa.pub显示公钥内容,将其手动复制到远程服务器中。
        • 检查远程服务器中文件authorized_keys是否存在: 在远程服务器终端输入ls -l ~/.ssh/authorized_keys,如果文件存在,会显示文件信息;如果文件不存在,会提示找不到文件。
        • 打开或创建 authorized_keys 文件: mkdir -p ~/.ssh nano ~/.ssh/authorized_keys
        • 粘贴公钥:
          • 将本地机器上 id_rsa.pub 文件中的内容复制。在 远程服务器nano 编辑器中右键粘贴。
        • 保存并退出:
          • Ctrl + O 保存文件。按 Enter 确认。按 Ctrl + X 退出编辑器。
  1. 确保远程服务器的 SSH 配置文件 /etc/ssh/sshd_config 允许公钥认证:
      • 在远程服务器终端中输入sudo nano /etc/ssh/sshd_config,打开配置文件。 确保PubkeyAuthentication yes这一行存在并未被注释(没有 # 号)。
      • 如果做了修改,按 Ctrl + O 保存文件,然后按 Enter 确认,按 Ctrl + X 退出编辑器。
      • 应用更改后,通过命令sudo systemctl restart ssh重启 SSH 服务。
  1. 在本地终端中通过ssh username@hostname命令连接到服务器的终端。这样,你就可以通过公钥私钥进行安全连接,而不必输入远程服务器的密码。
    1. 在远程服务器终端输入:
      • whoami,可得username;
      • hostname ,可得hostname;
      • hostname -I ,可得远程服务器的 IP 地址。
关于ssh与ip地址的问题:如果ip地址改变了,我可以再探索一下。
那这样不还是使用ip地址连接了嘛?我想通过密钥对连接,不通过ip地址,因为ip地址往往是动态分配的,重新启动机器后,ip地址就改变了,不方便下次连接
ChatGPT
抱歉,我理解错了。你可以通过以下步骤使用主机名进行连接,即使 IP 地址是动态的:

使用动态 DNS 服务

  1. 注册动态 DNS 服务
    1. 使用服务提供商(如 No-IP 或 DynDNS)注册一个主机名。
  1. 安装动态 DNS 客户端
    1. 在服务器上安装并配置动态 DNS 客户端,以便自动更新主机名的 IP 地址。

使用 SSH 配置文件

  1. 编辑本地 SSH 配置文件
    1. 在本地机器上编辑 ~/.ssh/config 文件:
      nano ~/.ssh/config
  1. 添加主机配置
    1. 添加如下配置,将 <dynamic-hostname> 替换为你的动态主机名:
      Host myserver HostName <dynamic-hostname> User username IdentityFile ~/.ssh/id_rsa
      这样你可以使用 myserver 来连接。
  1. 保存并退出
      • Ctrl + O 保存文件。
      • Enter 确认。
      • Ctrl + X 退出编辑器。
现在,你可以通过以下命令连接:
ssh myserver
这样就可以使用主机名而不依赖固定 IP 地址。

免费获取PyCharm Professional

对于中国大陆的学生,通过edu邮箱、GitHub这两种方式认证会失败,因此建议通过“官方文件”方式认证:
我们目前无法授予您免费许可证。可能的原因:
  • 我们无法确定拥有此域名下电子邮件地址的人是否为学生。
  • 此电子邮件域名属于被适用的欧盟、联合国或美国法令或某些出口管制限制所单独针对的组织或者在这些地区注册的组织。
如果您是这所学校的学生,并且认为您没有受到任何这些法令,请使用官方证件申请。

在PyCharm Professional中通过ssh连接远程服务器

PyCharm只有Professional版本可以通过ssh远程开发,Community Edition是不支持的。所以需要本地安装PyCharm Professional,而远程服务器不需要提前安装任何软件。
根据以下教程进行配置:
💡
其中有一步骤:“downloading the IDE backend on the remote host”,通常应在几分钟内完成。如果超过 10 分钟仍未完成,说明网络连接有问题,多试几次。