修改ssh为密钥登录

·

在客户端生成ssh密钥对,私钥保存在客户端,公钥保存到需要密钥登录的服务端。

客户端

生成ssh密钥对

可以生成rsa或者ed25519两种类型,rsa兼容性更好,ed25519更安全且密钥更短、速度更快,推荐使用ed25519。

ssh-keygen -t ed25519 -C "your_email_or_comment"
ssh-keygen -t rsa -b 4096 -C "comment"

服务端

  1. 创建目录(用于存储公钥)
mkdir -p ~/.ssh
  1. 创建公钥文件
nano ~/.ssh/authorized_keys

把公钥文件内容写入上述文件中。

  1. 设置文件权限
# 1. 锁死 .ssh 目录,只允许你自己进
chmod 700 ~/.ssh

# 2. 锁死 authorized_keys 文件,只允许你自己读写
chmod 600 ~/.ssh/authorized_keys

# 3. 确保你的家目录没有被别人乱改的权限(通常默认就是好的,但以防万一)
chmod go-w ~
  1. 禁用密码登录
sudo nano /etc/ssh/sshd_config

将下面这两项设置设置如下:

PasswordAuthentication no
PubkeyAuthentication yes

Ubuntu 的特殊坑: 在 Ubuntu 22.04 / 24.04 等新版本中,有时候上面的设置不生效。你需要检查是否存在一个“干扰文件”。 执行:ls /etc/ssh/sshd_config.d/ 如果你看到里面有个类似 50-cloud-init.conf 的文件,它里面的设置优先级比主配置文件高!

  • 解决办法: 删掉它,或者进去把它里面的 PasswordAuthentication yes 改成 no
  1. 重启 SSH 服务生效:

Bash

sudo systemctl restart ssh

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注