侧边栏壁纸
博主头像
站长破壁者博客

站长破壁者 · 每一步,都是为站长而破

  • 累计撰写 89 篇文章
  • 累计创建 20 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

VPS使用SSH密钥,免密登录全方位教程

FLC
FLC
2026-01-05 / 0 评论 / 0 点赞 / 4 阅读 / 0 字

1.摘要

你是不是每次登录 VPS 时都得输入一长串复杂的密码?这不仅麻烦,而且密码设置不够复杂的话,服务器还很可能面临暴力破解的风险。实际上,我相信很多朋友在查看服务器的 SSH 日志时,都会发现每天都有成百上千的暴力破解登录尝试。想想都让人心慌。

但别担心,今天我就带你了解一种更加安全且方便的登录方式:SSH 密钥登录。这就像是你家门口的指纹锁,只有你的“指纹”能解锁别人根本无法突破。配置好 SSH 密钥后,你将彻底摆脱每次都输入密码的烦恼。接下来,我将手把手教你如何在 VPS 上配置 SSH 密钥,实现免密登录。不论你是 Linux、Mac 还是 Windows 用户,我都会详细讲解每一步。整个过程非常简单,跟着做,10 分钟就能搞定。

2.什么是 SSH 密钥?它有什么优势?

首先,大家可能会疑惑,什么是 SSH 密钥?它有什么特别的呢?简单来说,SSH 密钥是一对数字“钥匙”,包括公钥私钥。公钥就像是你家门口的锁,而私钥就是打开这把锁的“钥匙”。SSH 密钥的工作方式基于非对称加密,也就是说即使有人在网络上监听你的信息,也无法获取私钥内容,这使得 SSH 密钥比传统的密码方式更加安全。

  • 公钥:用来放在 VPS 服务器上,相当于把锁装在门上。

  • 私钥:保存在你自己的电脑上,只有你知道它的内容,就像是你手里的钥匙。

每次连接 VPS 时,系统会用私钥验证公钥,匹配成功后就能直接登录,不需要输入密码。这不仅提高了安全性,还大大提升了操作的便捷性。

3.为什么使用 SSH 密钥登录 VPS?

也许你会问,为什么不继续使用传统的密码登录呢?其实,SSH 密钥登录不仅更加安全,而且能提高管理多台 VPS 的效率。来看一下它的几个优点:

  1. 大幅提升安全性
    密码登录很容易被暴力破解,而 SSH 密钥采用的加密算法非常强大,一个 2048 位的 RSA 密钥几乎无法被破解,安全性远超普通密码。

  2. 免密登录,操作更高效
    配置完成后,只需执行 ssh user@your-server-ip,就能直接登录,再也不用输入那串繁琐的密码。特别是对于同时管理多台 VPS 的朋友,这种方式简直太方便了。

  3. 支持禁用密码登录
    使用 SSH 密钥后,你可以禁用密码登录功能,这样即便攻击者知道你的用户名,也无法暴力破解进来,从根本上降低了风险。

  4. 适合自动化运维
    无论是备份脚本、部署程序还是批量管理任务,SSH 密钥都能实现无人值守的安全连接,避免将明文密码写入脚本,增强了系统的安全性。

因此,配置 SSH 密钥登录已经是 VPS 安全管理中的基础步骤,掌握它,能够大大提升你的运维效率。

3.1生成 SSH 密钥对

现在,来看看如何生成 SSH 密钥对。其实这一步非常简单,不管你是使用 Linux、Mac 还是 Windows,都可以通过几条命令轻松搞定。

打开终端

  • Windows:按 Win + R,输入“powershell” 或 “cmd”,按回车打开。

  • Mac:按 Command + 空格,输入“终端” 或 “Terminal” 打开。

  • Linux:按 Ctrl + Alt + T 或在应用菜单里找到“终端”。

执行生成密钥命令

在终端输入以下命令来生成密钥:

ssh-keygen -t rsa -b 4096 -C "你的邮箱或备注(注释信息)"

这条命令的意思是:

  • ssh-keygen:生成 SSH 密钥的命令

  • -t rsa:指定使用 RSA 算法生成密钥

  • -b 4096:设置密钥长度为 4096 位(越长越安全)

  • -C "备注信息":附加一个备注,帮助你标记这个密钥

设置密钥保存位置

Enter file in which to save the key (/home/your_username/.ssh/id_rsa):

按下回车Enter后,系统会询问你保存密钥的路径,直接按回车使用默认路径即可:

  • Linux/Mac~/.ssh/id_rsa

  • WindowsC:\Users\你的用户名\.ssh\id_rsa

这个默认位置是 SSH 客户端自动查找密钥的地方,用默认位置最省事,连接服务器时不需要额外指定密钥文件路径。

设置密钥密码(Passphrase)

接下来系统会问你是否要给私钥设置一个密码:

Enter passphrase (empty for no passphrase):

这里我给你两个建议:

  • 如果追求最高安全性:设置一个密码。这样即使别人拿到了你的私钥文件,没有这个密码也用不了。但每次连接VPS时,你需要输入这个密钥密码(不是服务器密码)。

  • 如果追求便利性:直接按回车留空。这样连接服务器时完全不需要输入任何密码,一步到位。但你要确保你的电脑足够安全,不会被别人接触到。

我个人的做法是,个人电脑不设置密钥密码,因为我的电脑只有我自己用;但在其它地方登录会设置密码,毕竟安全第一。

如果你选择设置密码,输入后会要求你再输入一次确认:

Enter same passphrase again:

密钥生成完成

设置好后,你会看到类似这样的输出:

Your identification has been saved in /home/username/.ssh/id_rsa
Your public key has been saved in /home/username/.ssh/id_rsa.pub
The key fingerprint is:
SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx zhangsan@gmail.com
The key's randomart image is:
+---[RSA 4096]----+
|    .o+*B=.      |
|     +=*=+.      |
|    ..o.Bo .     |
+----[SHA256]-----+

恭喜!你的 SSH 密钥对已经生成好了。在密钥保存位置会有两个文件:

  • id_rsa:这是你的私钥,千万不能泄露给任何人

  • id_rsa.pub:这是公钥,等会要上传到 VPS 服务器的就是这个文件

查看和获取公钥内容

现在我们需要查看公钥的内容,因为下一步要把它上传到 VPS。在终端输入:

cat ~/.ssh/id_rsa.pub

你会看到一长串文字,类似这样:

ssh-rsa AAAAB3...很长很长的字符串...xxxxx zhangsan@gmail.com

这就是你的公钥内容。它以 ssh-rsa 开头,中间是一大串加密字符,最后是你设置的注释。

重要提示:复制这段内容时,要从 ssh-rsa 开头一直复制到注释结尾,必须完整复制,一个字符都不能少。我建议你先把它复制到记事本里保存一下,下一步上传公钥时会用到。

私钥安全提醒

再强调一遍:私钥文件(id_rsa)绝对不能给任何人,也不要上传到任何地方。你的 VPS 安全就靠它了,泄露了私钥就等于把家门钥匙交给了别人。

只有公钥(id_rsa.pub)才需要上传到服务器,这个是专门用来公开的,不用担心安全问题。现在密钥已经生成好了,下一步我们就把公钥上传到 VPS 服务器上。

4.上传密钥到 VPS

4.1上传公钥到 VPS

SSH 密钥对生成完成后,我们需要将公钥上传到 VPS。这个过程就像是把锁安装到服务器上,只有你手中的钥匙才能打开。

方法一:使用 ssh-copy-id 命令

如果你使用的是 Linux 或 Mac,且可以使用密码登录 VPS,ssh-copy-id 命令是最简单的方式。只需运行以下命令:

ssh-copy-id 用户名@VPS_IP

例如:

ssh-copy-id root@192.168.1.100

如果你使用的是非默认端口,记得加上 -p 参数指定端口:

ssh-copy-id -p 端口号 用户名@VPS_IP

系统会提示你输入一次密码,验证通过后,公钥就会自动上传到 VPS。

方法二:手动上传

如果你不使用 ssh-copy-id 或者是 Windows 用户,可以选择手动上传公钥。

首先,查看并复制公钥内容:

cat ~/.ssh/id_rsa.pub

登录到 VPS 后,检查是否有 .ssh 目录,如果没有,创建一个并设置权限:

mkdir -p ~/.ssh
chmod 700 ~/.ssh

然后,把公钥内容写入 ~/.ssh/authorized_keys 文件:

echo "你的公钥内容" >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys

4.2禁用密码登录,进一步提高安全性

现在,你已经可以通过 SSH 密钥连接 VPS,但默认情况下,服务器仍然允许密码登录,这样还是有被暴力破解的风险。

禁用密码登录

进入 VPS,编辑 SSH 配置文件:

sudo nano /etc/ssh/sshd_config

找到以下配置项:

#PasswordAuthentication yes

将它改为:

PasswordAuthentication no

然后,重启 SSH 服务使配置生效:

sudo systemctl restart sshd

5.测试新配置

测试时,确保你有一个正常的 SSH 连接保持在线,使用另一个终端测试通过 SSH 密钥登录。成功后,密码登录就被彻底禁用,系统会提示“Permission denied”(权限拒绝)。

6.总结

至此,我们已经完成了 SSH 密钥免密登录的配置。通过 SSH 密钥登录,不仅提高了 VPS 的安全性,还让日常操作变得更加方便。无论你是 Linux、Mac 还是 Windows 用户,按照教程操作,你都能轻松搞定。另外,禁用密码登录后,VPS 的安全性会更高,防止暴力破解。配置好后,你可以安心地管理你的 VPS,免去输入密码的烦恼。希望这篇教程能帮你解决 VPS 登录的安全问题,提升运维效率。

0

评论区