温馨提示×

Debian SSH无密码登录设置

小樊
54
2025-10-25 05:43:42
栏目: 智能运维

Debian SSH无密码登录设置步骤

1. 准备工作:安装SSH服务

若服务器未安装SSH服务,需先通过以下命令安装openssh-server

sudo apt update && sudo apt install openssh-server -y

安装完成后,启动SSH服务并设置为开机自启:

sudo systemctl start ssh && sudo systemctl enable ssh

2. 生成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)需上传至服务器。

3. 将公钥复制到Debian服务器

方法一:使用ssh-copy-id命令(推荐)

ssh-copy-id -i ~/.ssh/id_rsa.pub username@server_ip
  • 说明
    • 替换username为服务器上的目标用户(如rootdebian);
    • 若服务器SSH端口非默认22,需添加-p参数(如ssh-copy-id -i ~/.ssh/id_rsa.pub -p 2222 username@server_ip);
    • 执行后会提示输入服务器用户密码,输入正确后公钥会自动追加至服务器的~/.ssh/authorized_keys文件。

方法二:手动复制(若无ssh-copy-id

  • 步骤1:在客户端查看公钥内容:
    cat ~/.ssh/id_rsa.pub
    
  • 步骤2:登录服务器,创建.ssh目录并设置权限:
    mkdir -p ~/.ssh && chmod 700 ~/.ssh
    
  • 步骤3:将公钥内容追加至authorized_keys文件:
    echo "粘贴公钥内容" >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys
    

    注意authorized_keys文件权限必须为600(仅所有者可读写),否则会导致密钥认证失败。

4. 配置SSH服务允许密钥认证

编辑服务器上的SSH配置文件(/etc/ssh/sshd_config):

sudo nano /etc/ssh/sshd_config
  • 关键配置项修改
    PubkeyAuthentication yes       # 允许公钥认证(默认yes,可保留)
    AuthorizedKeysFile .ssh/authorized_keys  # 指定公钥文件路径(默认即可)
    PasswordAuthentication no      # 禁用密码认证(测试成功后再修改)
    
  • 可选优化
    • 更改默认端口(增强安全性,避免暴力破解):
      Port 2222  # 修改为非22端口(如2222)
      
    • 禁止root用户直接登录(减少攻击面):
      PermitRootLogin no  # 仅允许普通用户登录,再通过`sudo`提权
      

修改完成后,保存并退出编辑器(Ctrl+XYEnter),重启SSH服务使配置生效:

sudo systemctl restart ssh

5. 测试无密码登录

在客户端使用私钥连接服务器:

ssh -i ~/.ssh/id_rsa username@server_ip
  • 若修改了SSH端口,需添加-p参数:
    ssh -i ~/.ssh/id_rsa -p 2222 username@server_ip
    
  • 预期结果:输入服务器用户密码后(若passphrase留空则无需输入),直接登录成功,无需再次输入密码。

6. 安全注意事项

  • 保护私钥:私钥(id_rsa)是登录凭证,需设置权限为600chmod 600 ~/.ssh/id_rsa),避免泄露;
  • 备份密钥:将私钥备份至安全位置(如加密U盘),防止丢失;
  • 定期更换密钥:每3-6个月更换一次密钥对,提升安全性;
  • 监控登录日志:通过journalctl -u ssh/var/log/auth.log查看登录记录,及时发现异常;
  • 防火墙设置:若使用ufw防火墙,需允许SSH端口(默认22或自定义端口):
    sudo ufw allow 22/tcp  # 若修改了端口,替换为实际端口
    sudo ufw enable
    

通过以上步骤,即可实现Debian系统的SSH无密码登录,既提升了远程管理的便利性,又通过密钥认证增强了安全性。

0