PHPStorm配置SSH密钥对远程连接服务器同步代码教程,方便远程编辑服务器项目

477 阅读7分钟

PHPStorm配置SSH密钥对远程连接服务器同步代码教程,方便远程编辑服务器项目

在使用 PHPStorm 进行远程开发时,通过 SSH 密钥对的方式可以实现更加安全的连接,避免因服务器IP限制,本地IP发生变化,导致频繁的配置IP。我将从生成密钥对到在 PHPStorm 中配置的完整流程。


1. 背景与需求分析

PHPStorm 提供了对远程服务器的便捷支持,而 SSH 密钥对(Public Key Authentication)是一种更加安全高效的身份验证方式。

免去了配置账号密码的烦恼。

通过配置密钥对,我们可以实现:

  • 无密码登录:提高开发效率,避免重复输入密码。
  • 增强安全性:相比传统的密码登录,密钥对不容易被暴力破解。
  • IP更换烦恼:有的服务器为了安全,只有限定的IP可以访问,这样可以解决IP频繁更换的问题。

下面我们将分步骤完成以下内容:

  1. 在服务器上生成密钥对。
  2. 将密钥配置到本地环境。
  3. 在 PHPStorm 中完成配置并测试连接。
  4. 在 PHPStorm同步代码配置。

2. 首先理解下SSH密钥对

什么是 SSH 密钥对?

SSH 密钥对就像一对“锁”和“钥匙”,用来保证你的电脑和服务器之间的通信是安全的。它有两部分:

  • 公钥(Public Key):相当于一把“锁”,可以公开放在服务器上,任何人都能看到。
  • 私钥(Private Key):相当于一把“钥匙”,只能你自己保管,不能给别人。

服务器通过“公钥”来检查你的“钥匙”是不是匹配。如果匹配,就让你进去;如果不匹配,就拒绝访问。


用生活例子来解释

  1. 安装锁: 你把“公钥”这把锁装到服务器的门上,就像你把家里的门换成了只有你有钥匙能打开的锁。

  2. 钥匙只有你有: 私钥是你独有的钥匙,别人没有,就算看到锁也打不开。

  3. 开门验证: 每次连接服务器,就像你用钥匙开门。服务器会检查你的钥匙是否能打开它的锁。如果能打开,说明是你本人,就允许你进入。


为什么要用密钥对?

普通的登录方式需要输入密码,但密码可能会被偷看猜到。而密钥对的“钥匙”非常复杂,几乎不可能被破解,所以更安全!


图解 SSH 密钥对(简单可视化)

密钥对的工作原理
你的电脑 (私钥) ---------------》》》匹配成功!-------------→ 服务器 (公钥)

场景

  1. 你家有一个门(服务器)。
  2. 你装了一把“智能锁”(公钥)。
  3. 你拿着一把“唯一的钥匙”(私钥)。
  • 公钥安装在服务器上,保证只有正确的钥匙才能开门。
  • 私钥保存在电脑上,用于打开这把锁。

如何使用密钥对?

  1. 生成密钥对
    你用电脑生成一对锁和钥匙(公钥和私钥)。

    ssh-keygen -t rsa
    
  2. 安装锁
    把公钥(锁)放到服务器上。

    cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
    
  3. 用钥匙开门
    下次登录时,只需要你的私钥,服务器会自动验证你是否有权限。


问题回答:

问:如果别人偷走了我的钥匙怎么办?
答:如果有人偷了你的私钥(钥匙),他就能打开你的锁,所以私钥一定要妥善保管,不要让别人看到。

问:没有私钥的人能打开我的服务器吗?
答:不能!没有私钥,就像没有钥匙一样,打不开门。

问:如果我丢了钥匙怎么办?
答:你可以重新生成一对密钥,换把新的锁(公钥),然后删掉服务器上的旧锁。


3. 在服务器上生成 SSH 密钥对

首先,我们需要在目标服务器上生成 SSH 密钥对。

2.1 登录服务器

使用 SSH 客户端工具(如终端、Putty)登录到远程服务器:

ssh <username>@<server_ip>

2.2 生成密钥对

在服务器上执行以下命令生成密钥对:

ssh-keygen -t rsa -b 1024 -C "your_email@example.com"
参数详解:
  • -t rsa:指定密钥类型为 RSA。
  • -b 1024:设置密钥长度为 4096 位(更安全)。512-4096都可以
  • -C "your_email@example.com":为密钥添加注释,方便管理。

执行后,系统会提示输入密钥的保存路径和密码:

  1. 保存路径:建议按回车键使用默认路径(~/.ssh/id_rsa)。
  2. 密码:此为可选项,输入密码可为私钥增加保护层,若无需设置密码可直接回车。

2.3 检查密钥生成结果

生成完成后,密钥文件默认存放在 ~/.ssh 目录下,包含以下两个文件:

  • 私钥:~/.ssh/id_rsa
  • 公钥:~/.ssh/id_rsa.pub

使用以下命令查看公钥内容:

cat ~/.ssh/id_rsa.pub

基于上面的SSH的理解,我们配置到本地的应该是私钥

使用以下命令查看私钥内容:

cat ~/.ssh/id_rsa

将输出的内容复制下来,保存到你本地的一个文件,稍后在 PHPStorm 配置中会用到。


3. 配置密钥对的访问权限

为确保密钥的使用安全性,需要设置 .ssh 目录和密钥文件的权限。

执行以下命令:

chmod 700 ~/.ssh
chmod 600 ~/.ssh/id_rsa
chmod 600 ~/.ssh/id_rsa.pub

4. 配置 PHPStorm 使用 SSH 私钥

在 PHPStorm 中完成密钥对配置,具体操作步骤如下:

4.1 打开 SSH 配置窗口

  1. 打开 PHPStorm。
  2. 进入 File > Settings > Tools > SSH Configurations

我的是中文版的,如下截图: image.png

  1. 点击 + 添加新的 SFTP 配置。

image.png

  1. 点击 ... 添加新的 SSH 配置。

image.png

5.点击 + 添加新的 SSH 配置。

image.png

4.2 配置 SSH 参数

在弹出的配置窗口中填写以下内容:

  • 主机 (Host):服务器地址(如 192.168.1.1)。
  • 端口 (Port):默认值为 22
  • 用户名 (User name):登录服务器的用户名。
  • 身份验证类型:选择 密钥对 OpenSSH 或 PuTTY
  • 私钥文件 (Private key file):选择从服务器下载到本地的私钥文件(如 id_rsa)。
  • 密码短语 (Passphrase):若在生成密钥时设置了密码,则在此输入。

配置完成后,点击 “测试连接” 按钮,若显示连接成功,则说明配置正确。

image.png


5. 将公钥添加到服务器的 authorized_keys

为了使服务器信任该密钥对,我们需要将生成的公钥添加到服务器的 authorized_keys 文件中。

执行以下命令:

echo "公钥内容" >> ~/.ssh/authorized_keys

随后,确保文件权限正确:

chmod 600 ~/.ssh/authorized_keys

6. 测试连接与使用

完成上述配置后,在 PHPStorm 中可以直接通过 SSH 连接到服务器,进行文件同步、远程开发或调试。

目录映射配置

根路径一定要选择你项目所在的路径,这样才能做好映射,之后可以方便的同步数据。

image.png

本地改动传到服务器

image.png

服务器文件下载到本地

image.png

注意:如果你没做好映射,是不会出现这个菜单的。

7. 常见问题与解决方案

问题 1:测试连接失败

  • 检查服务器的 SSH 服务是否正常运行:
    sudo systemctl status sshd
    
  • 确保防火墙规则允许端口 22。

问题 2:无法读取私钥文件

  • 确保本地私钥文件权限设置正确:
    chmod 600 ~/.ssh/id_rsa
    

问题 3:提示 “Permission denied”

  • 确保公钥已经正确添加到服务器的 authorized_keys 文件。

8. 总结

通过本文的教程,我们成功完成了以下操作:

  1. 在服务器上生成 SSH 密钥对。
  2. 将密钥正确配置到 PHPStorm 中。
  3. 使用密钥对实现无密码远程连接。

SSH 密钥对不仅提升了开发效率,也显著增强了服务器连接的安全性,是现代远程开发的最佳实践之一。希望本文对您有所帮助!


更多技术内容,欢迎关注我们的分享!