🔑 SSH 密钥:打造赛博堡垒的免密通行证
第一部分:锻造你的专属钥匙 (生成密钥对)
Section titled “第一部分:锻造你的专属钥匙 (生成密钥对)”SSH 密钥认证的原理很简单:生成一把公钥(锁芯)和一把私钥(钥匙)。你把公钥放到服务器上,自己拿着私钥。以后只要私钥和公钥对上了,大门自动敞开。
我们将在你本地的电脑(如你的 Mac 或 Windows 电脑)上生成这对钥匙。
1. 生成现代安全的 Ed25519 密钥(已有密钥可跳过)
Section titled “1. 生成现代安全的 Ed25519 密钥(已有密钥可跳过)”打开本地电脑的终端(Terminal 或 PowerShell),输入以下命令:
ssh-keygen -t ed25519 -C "你的邮箱或备注名"科普小贴士:以前大家常用
rsa算法,但现在更推荐ed25519。它不仅安全性更高,生成的密钥长度也更短,连接速度更快。
2. 回答生成向导的问题
Section titled “2. 回答生成向导的问题”按下回车后,系统会问你几个问题:
Enter file in which to save the key...(保存位置): 直接按 回车,使用默认路径(通常是~/.ssh/id_ed25519)。Enter passphrase (empty for no passphrase):(私钥密码): 这是给你的私钥再加一层密码。为了追求绝对的“免密丝滑”,日常家用服务器这里可以直接按回车留空。Enter same passphrase again:: 再次按 回车 确认。
3. 认识你的钥匙
Section titled “3. 认识你的钥匙”生成完毕后,你的 ~/.ssh/ 目录下会多出两个文件:
id_ed25519:这是你的私钥(你的绝对凭证,打死也不能发给任何人)。id_ed25519.pub:这是你的公钥(可以随意公开,接下来要传给服务器的就是它)。
第二部分:为服务器换上新锁芯 (上传公钥)
Section titled “第二部分:为服务器换上新锁芯 (上传公钥)”现在,我们需要把刚刚生成的公钥 (.pub 文件) 扔到你的 Linux 虚拟机或服务器上。
方法一:使用一键命令(最简单,强烈推荐)
Section titled “方法一:使用一键命令(最简单,强烈推荐)”在你的本地终端中,直接执行以下命令(将 <你的用户名> 和 <服务器IP> 替换为真实信息):
ssh-copy-id <你的用户名>@<服务器IP>系统会最后一次要求你输入这台服务器的 SSH 登录密码。验证通过后,公钥就会被自动写入到服务器的 ~/.ssh/authorized_keys 文件中。
方法二:手动复制(当方法一不可用时)
Section titled “方法二:手动复制(当方法一不可用时)”- 在本地电脑终端输入
cat ~/.ssh/id_ed25519.pub,将屏幕上输出的这一长串字符全部复制。 - 登录到你的服务器,执行:
Terminal window mkdir -p ~/.sshnano ~/.ssh/authorized_keys - 将复制的公钥粘贴进去,按
Ctrl+O保存,Ctrl+X退出。
🎉 测试一下:
现在,在本地终端输入 ssh <你的用户名>@<服务器IP>。你会发现,系统再也不问你要密码了,直接秒进服务器!
第三部分:配置 Config 文件 - 终极丝滑体验
Section titled “第三部分:配置 Config 文件 - 终极丝滑体验”虽然免密了,但每次都要记住并输入 ssh <你的用户名>@<服务器IP> -p 2222 这一大串依然很反人类。我们可以通过配置本地的 ~/.ssh/config 文件来简化这一切。
1. 创建或编辑 Config 文件
Section titled “1. 创建或编辑 Config 文件”在本地电脑的终端执行:
nano ~/.ssh/config2. 编写你的服务器花名册
Section titled “2. 编写你的服务器花名册”将你的服务器信息按照以下模板填入并保存:
# 我的 Proxmox 主节点Host pve HostName 192.168.100.50 User root Port 22 IdentityFile ~/.ssh/id_ed25519
# 跑 Docker 的 Debian 虚拟机Host docker HostName 192.168.100.60 User cyberbuilder Port 22
# 远端的云服务器(假如端口改成了 2222)Host vps HostName 123.45.67.89 User ubuntu Port 2222参数说明:
Host:你想给这台机器起的“小名”(快捷方式)。HostName:机器的真实 IP 或域名。User:登录时使用的用户名。Port:SSH 端口,如果是默认的 22 可以不写。IdentityFile:指定使用的私钥路径(如果有多个私钥才需要写,默认会自动找 id_ed25519)。
3. 见证奇迹的时刻
Section titled “3. 见证奇迹的时刻”配置好之后,你再也不需要敲 IP 和用户名了。想登录 PVE 节点?只需在本地终端输入:
ssh pve回车,瞬间进入系统。优雅,永不过时。
🛡️ 终极防御:关闭密码登录 (可选但强烈建议)
Section titled “🛡️ 终极防御:关闭密码登录 (可选但强烈建议)”既然钥匙已经配好了,为了防止网上的黑客使用字典暴力破解你的密码,最安全的做法是彻底封死密码登录这条路。
⚠️ 警告:在执行此操作前,请务必确保你的 SSH 密钥免密登录已经测试成功!否则你可能会把自己锁在外面!
- 免密登录到你的服务器。
- 编辑 SSH 守护进程配置文件:
Terminal window sudo nano /etc/ssh/sshd_config - 找到
PasswordAuthentication这一项。如果前面有#号,把#删掉,并将后面的yes改成no:PasswordAuthentication no - 保存退出后,重启 SSH 服务:
(注:部分系统如 CentOS 是
Terminal window sudo systemctl restart sshsystemctl restart sshd)
至此,你的服务器已经化身为一座固若金汤的堡垒,只认你手中的唯一一把钥匙。
常见问题与注意事项
Section titled “常见问题与注意事项”- 权限问题: SSH 对文件权限极其敏感。如果配置后依然要求输入密码,请检查服务器端的权限:
服务器上的
~/.ssh目录权限必须是700,~/.ssh/authorized_keys文件的权限必须是600。 - 密钥丢失: 重装本地电脑系统前,千万记得备份你的
~/.ssh/文件夹,否则服务器将无法登录,只能通过 PVE 的 VNC 控制台进去救砖了。