Debian SSH无密码登录设置步骤
若服务器未安装SSH服务,需先通过以下命令安装openssh-server:
sudo apt update && sudo apt install openssh-server -y
安装完成后,启动SSH服务并设置为开机自启:
sudo systemctl start ssh && sudo systemctl enable ssh
在本地客户端(如个人电脑)生成RSA密钥对(默认保存路径为~/.ssh/):
ssh-keygen -t rsa -b 4096
Enter键使用默认路径(~/.ssh/id_rsa);passphrase留空(直接按Enter跳过);-f参数指定(如ssh-keygen -t rsa -f ~/.ssh/custom_key)。id_rsa)需严格保密,公钥(id_rsa.pub)需上传至服务器。ssh-copy-id命令(推荐)ssh-copy-id -i ~/.ssh/id_rsa.pub username@server_ip
username为服务器上的目标用户(如root、debian);22,需添加-p参数(如ssh-copy-id -i ~/.ssh/id_rsa.pub -p 2222 username@server_ip);~/.ssh/authorized_keys文件。ssh-copy-id)cat ~/.ssh/id_rsa.pub
.ssh目录并设置权限:mkdir -p ~/.ssh && chmod 700 ~/.ssh
authorized_keys文件:echo "粘贴公钥内容" >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys
注意:
authorized_keys文件权限必须为600(仅所有者可读写),否则会导致密钥认证失败。
编辑服务器上的SSH配置文件(/etc/ssh/sshd_config):
sudo nano /etc/ssh/sshd_config
PubkeyAuthentication yes # 允许公钥认证(默认yes,可保留)
AuthorizedKeysFile .ssh/authorized_keys # 指定公钥文件路径(默认即可)
PasswordAuthentication no # 禁用密码认证(测试成功后再修改)
Port 2222 # 修改为非22端口(如2222)
PermitRootLogin no # 仅允许普通用户登录,再通过`sudo`提权
修改完成后,保存并退出编辑器(Ctrl+X→Y→Enter),重启SSH服务使配置生效:
sudo systemctl restart ssh
在客户端使用私钥连接服务器:
ssh -i ~/.ssh/id_rsa username@server_ip
-p参数:ssh -i ~/.ssh/id_rsa -p 2222 username@server_ip
passphrase留空则无需输入),直接登录成功,无需再次输入密码。id_rsa)是登录凭证,需设置权限为600(chmod 600 ~/.ssh/id_rsa),避免泄露;journalctl -u ssh或/var/log/auth.log查看登录记录,及时发现异常;ufw防火墙,需允许SSH端口(默认22或自定义端口):sudo ufw allow 22/tcp # 若修改了端口,替换为实际端口
sudo ufw enable
通过以上步骤,即可实现Debian系统的SSH无密码登录,既提升了远程管理的便利性,又通过密钥认证增强了安全性。