Debian 13禁用SSH密码登录并启用密钥登录
生成密钥对(推荐在本地生成):
ssh-keygen -t rsa
- 公钥文件:id_rsa.pub
- 私钥文件:id_rsa
添加公钥到远程服务器:
ssh-copy-id -i ~/.ssh/id_rsa.pub root@远程服务器IP
如果是在远程服务器生成的密钥对:
1、添加公钥到authorizedkeys:
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorizedkeys
2、下载私钥到本地:
scp root@远程服务器IP:~/.ssh/id_rsa ./
3、删除远程服务器上的私钥:
rm ~/.ssh/id_rsa
注意:从远程服务器下载私钥有泄漏风险,推荐在本地生成密钥对。
禁用SSH密码登录
测试使用密钥登录远程服务器:
ssh -i ~/.ssh/id_rsa root@远程服务器IP
确保使用密钥能正常登录远程服务器后再禁用密码登录:
nano /etc/ssh/sshd_config.d/00-disable-password.conf
粘贴如下内容:
PasswordAuthentication no
PubkeyAuthentication yes
重启SSH服务:
/etc/init.d/ssh restart
关于SSH配置文件加载顺序
Debian 13云服务器版本有以下配置文件:
50-cloud-init.conf
该配置文件中开启了密码登录:
PasswordAuthentication yes
网上的教程通常使用如下文件名称:
99-disable-password.conf
SSH配置文件是按字母数字顺序加载,先加载到的配置项生效。所以,如果配置文件名称以99开头,会导致不生效。
检测生效的配置:
sshd -T | grep passwordauthentication

