在使用 PHPStorm 进行远程开发时,通过 SSH 密钥对的方式可以实现更加安全的连接,避免因服务器IP限制,本地IP发生变化,导致频繁的配置IP。我将从生成密钥对到在 PHPStorm 中配置的完整流程。
1. 背景与需求分析
PHPStorm 提供了对远程服务器的便捷支持,而 SSH 密钥对(Public Key Authentication)是一种更加安全高效的身份验证方式。
免去了配置账号密码的烦恼。
通过配置密钥对,我们可以实现:
-
无密码登录:提高开发效率,避免重复输入密码。
-
增强安全性:相比传统的密码登录,密钥对不容易被暴力破解。
-
IP更换烦恼:有的服务器为了安全,只有限定的IP可以访问,这样可以解决IP频繁更换的问题。
下面我们将分步骤完成以下内容:
在服务器上生成密钥对。
将密钥配置到本地环境。
在 PHPStorm 中完成配置并测试连接。
在 PHPStorm同步代码配置。
2. 首先理解下SSH密钥对
什么是 SSH 密钥对?
SSH 密钥对就像一对“锁”和“钥匙”,用来保证你的电脑和服务器之间的通信是安全的。它有两部分:
-
公钥(Public Key):相当于一把“锁”,可以公开放在服务器上,任何人都能看到。
-
私钥(Private Key):相当于一把“钥匙”,只能你自己保管,不能给别人。
服务器通过“公钥”来检查你的“钥匙”是不是匹配。如果匹配,就让你进去;如果不匹配,就拒绝访问。
用生活例子来解释
安装锁: 你把“公钥”这把锁装到服务器的门上,就像你把家里的门换成了只有你有钥匙能打开的锁。
钥匙只有你有: 私钥是你独有的钥匙,别人没有,就算看到锁也打不开。
开门验证: 每次连接服务器,就像你用钥匙开门。服务器会检查你的钥匙是否能打开它的锁。如果能打开,说明是你本人,就允许你进入。
为什么要用密钥对?
普通的登录方式需要输入密码,但密码可能会被偷看或猜到。而密钥对的“钥匙”非常复杂,几乎不可能被破解,所以更安全!
图解 SSH 密钥对(简单可视化)
密钥对的工作原理
你的电脑 (私钥) —————》》》匹配成功!————-→ 服务器 (公钥)
场景:
你家有一个门(服务器)。
你装了一把“智能锁”(公钥)。
你拿着一把“唯一的钥匙”(私钥)。
-
公钥安装在服务器上,保证只有正确的钥匙才能开门。
-
私钥保存在电脑上,用于打开这把锁。
如何使用密钥对?
生成密钥对: 你用电脑生成一对锁和钥匙(公钥和私钥)。
ssh-keygen -t rsa
安装锁: 把公钥(锁)放到服务器上。
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
用钥匙开门: 下次登录时,只需要你的私钥,服务器会自动验证你是否有权限。
问题回答:
问:如果别人偷走了我的钥匙怎么办? 答:如果有人偷了你的私钥(钥匙),他就能打开你的锁,所以私钥一定要妥善保管,不要让别人看到。
问:没有私钥的人能打开我的服务器吗? 答:不能!没有私钥,就像没有钥匙一样,打不开门。
问:如果我丢了钥匙怎么办? 答:你可以重新生成一对密钥,换把新的锁(公钥),然后删掉服务器上的旧锁。
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":为密钥添加注释,方便管理。
执行后,系统会提示输入密钥的保存路径和密码:
保存路径:建议按回车键使用默认路径(~/.ssh/id_rsa)。
密码:此为可选项,输入密码可为私钥增加保护层,若无需设置密码可直接回车。
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 配置窗口
打开 PHPStorm。
进入 File > Settings > Tools > SSH Configurations。
我的是中文版的,如下截图:
点击 + 添加新的 SFTP 配置。
image.png
点击 … 添加新的 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. 总结
通过本文的教程,我们成功完成了以下操作:
在服务器上生成 SSH 密钥对。
将密钥正确配置到 PHPStorm 中。
使用密钥对实现无密码远程连接。
SSH 密钥对不仅提升了开发效率,也显著增强了服务器连接的安全性,是现代远程开发的最佳实践之一。希望本文对您有所帮助!
更多技术内容,欢迎关注我们的分享!
评论前必须登录!
注册