跨境独立站宝塔面板服务器SSH密钥登录禁用密码
宝塔面板服务器SSH密钥登录禁用密码完整步骤
对于运营跨境独立站的站长来说,服务器安全是重中之重。
默认的密码登录方式容易被暴力破解,换成SSH密钥登录后,只有持有对应私钥的电脑才能连上服务器。
本文面向零基础用户,全程使用命令行和宝塔面板文件管理,让你一步步完成密钥配置并彻底禁用密码登录。
准备工具与环境
操作前请确认以下条件已满足:
- 你已拥有一台运行Linux(如CentOS 7/8、Ubuntu 20.04/22.04)的服务器,并安装了宝塔面板。
- 你能通过密码或宝塔面板的SSH终端登录服务器(建议先在宝塔后台开一个SSH会话)。
- 本地电脑准备了终端软件:Windows用PowerShell或PuTTY,macOS/Linux直接用系统终端。
- 如果没有现成密钥,本文会教你生成一对新的。
第一步:在本地生成SSH密钥对
打开本地终端(Windows建议用PowerShell),执行以下命令:
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
-t rsa指定密钥类型为RSA;-b 4096设置长度为4096位,更安全。-C "your_email"只是添加一个注释,方便区分,可随意填写。- 按回车后,系统会询问保存路径(默认
~/.ssh/id_rsa)和密码短语(passphrase),建议直接按回车跳过短语以便自动化登录,但也可设置二级保护。
命令执行完后,在 ~/.ssh/ 目录下会生成 id_rsa(私钥)和 id_rsa.pub(公钥)。
私钥必须妥善保管,绝不能泄露给任何人。
第二步:将公钥上传到宝塔面板服务器
方法一:使用宝塔面板的文件管理器(推荐新手)
- 登录宝塔面板后台,点击左侧“文件”进入文件管理。
- 导航到
/root/.ssh/目录(如果没有该目录,可以手动创建)。 - 点击“上传”,将本地
id_rsa.pub文件上传到该目录。 - 上传完成后,点击文件名右侧的“编辑”,选中所有内容并复制。如果该目录下已有
authorized_keys文件,直接打开并将内容粘贴到末尾(另起一行);如果没有,新建一个名为authorized_keys的文件,将公钥内容粘贴进去并保存。
方法二:使用 ssh-copy-id 命令(适用于本地有OpenSSH客户端的环境)
在本地终端执行:
ssh-copy-id -i ~/.ssh/id_rsa.pub root@你的服务器IP
输入当前服务器密码即可自动完成公钥追加。
验证权限:无论哪种方法,最终 /root/.ssh/authorized_keys 文件权限必须为 600,目录 /root/.ssh 权限为 700。
可在服务器终端执行:
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
第三步:修改SSH配置启用密钥并禁用密码
- 用命令行或宝塔SSH终端登录服务器。
- 备份原SSH配置文件:
cp /etc/ssh/sshd_config /etc/ssh/sshd_config.backup
- 编辑配置文件:
vim /etc/ssh/sshd_config
(如果不会vim,可用宝塔面板的文件编辑器直接打开 /etc/ssh/sshd_config)
- 找到或添加以下两行,确保值如下:
PubkeyAuthentication yes
PasswordAuthentication no
PubkeyAuthentication保证密钥登录开启。PasswordAuthentication设置为no即关闭密码登录。
如果 ChallengeResponseAuthentication 也存在,建议也设为 no。
- 保存并退出。
- 重启SSH服务使配置生效:
systemctl restart sshd
重启后,当前已建立的SSH会话不会断开,但新登录将不再接受密码。
第四步:测试密钥登录,验证安全配置
重要提醒:在关闭当前SSH窗口之前,务必另开一个终端会话进行测试,确认密钥登录正常后再关闭旧窗口。
打开一个新终端窗口,执行:
ssh -i ~/.ssh/id_rsa root@你的服务器IP
如果提示输入passphrase(你之前若设置了)就输入,否则直接进入服务器。
成功登录说明密钥配置生效。
如果报错 Permission denied (publickey),请按照以下顺序排查:
- 检查
/root/.ssh/authorized_keys的权限和内容格式(每行一个公钥,不能有多余空格)。 - 确认
PubkeyAuthentication和PasswordAuthentication的值正确,且没有被其他Match段覆盖。 - 检查服务器防火墙是否开放22端口(宝塔安全组也要放行)。
- 查看SSH日志:
journalctl -u sshd -n 50或tail -f /var/log/secure(CentOS)或/var/log/auth.log(Ubuntu),定位具体错误。
一旦密钥登录测试通过,就可以安全地关闭所有基于密码的旧会话。
之后任何人想登录你的服务器,都必须持有对应的私钥文件,大大降低了被暴力破解的风险。
常见问题与避坑
Q:禁用密码后我忘记了密钥,还能登录吗?
A:如果私钥丢失且没有其他登录方式,服务器将彻底无法SSH连接。建议先在宝塔面板后台开启“SSH终端”作为备用(但宝塔的SSH仍然使用密码登录,这本身存在风险)。更稳妥的做法是为密钥创建一份加密备份,同时保留一个高强度密码登录的备用方案(如只允许特定IP密码登录)。
Q:我有多台服务器,能否使用同一个公钥?
A:可以,公钥可以复制到任意多台服务器的 authorized_keys。私钥只有一份,注意保管。
Q:修改配置后无法登录了怎么办?
A:如果当前会话还未关闭,立即将 PasswordAuthentication 改回 yes 并重启sshd,再排查原因。如果所有会话都已断开,你可以通过服务器KVM(如果云厂商提供)或救援模式,挂载系统盘后直接修改 /etc/ssh/sshd_config。
Q:还需要设置Selinux或防火墙吗?
A:默认Linux发行版Selinux对SSH没有特别限制;防火墙只要放行22端口即可。如果使用非常规端口,需对应调整。
完成以上步骤后,你的跨境独立站服务器已经完成了最基础也最关键的安全加固。
如果后续需要管理多个用户,可以为他们单独生成密钥对并分别添加公钥。
推荐继续学习如何配置Fail2ban和防火墙规则,构建多层防护体系。