Ubuntu 上开启 SSH 服务、禁用密码登录并仅允许密钥认证

1. 安装 OpenSSH 服务

如果尚未安装 SSH 服务,运行以下命令:

bash 复制代码
sudo apt update
sudo apt install openssh-server

2. 启动 SSH 服务并设置开机自启

bash 复制代码
sudo systemctl start ssh
sudo systemctl enable ssh

3. 生成 SSH 密钥对(本地机器)

在本地终端生成密钥对(如未生成过):

bash 复制代码
ssh-keygen -t ed25519 -C "your_email@example.com"
  • 默认保存路径:~/.ssh/id_ed25519(私钥)和 ~/.ssh/id_ed25519.pub(公钥)。
  • 可选设置密钥密码(增强安全性)。

Ubuntu 22.10 及更高版本默认禁用了 ssh-rsa 签名算法(基于 SHA-1 哈希算法),原因是该算法存在安全风险,OpenSSH 从 8.7 版本开始不再默认支持,所有这里没有使用rsa签名算法


4. 将公钥上传到服务器

使用 scp 自动上传公钥:

bash 复制代码
 scp .\.ssh\id_ed25519.pub username@server_ip:~/.ssh

复制公钥内容到服务器的 ~/.ssh/authorized_keys 文件:

bash 复制代码
sudo cat ~/.ssh/id_ed25519.pub > ~/.ssh/authorized_keys

5. 禁用密码登录

编辑 SSH 配置文件:

bash 复制代码
sudo nano /etc/ssh/sshd_config

修改以下参数:

ini 复制代码
PasswordAuthentication no
PubkeyAuthentication yes

保存后重启 SSH 服务:

bash 复制代码
sudo systemctl restart ssh

6. 验证配置

  • 测试密钥登录

    bash 复制代码
    ssh username@server_ip

    应无需输入密码直接登录(若密钥有密码则需输入密钥密码)。

  • 检查密码登录是否禁用

    bash 复制代码
    ssh -o PreferredAuthentications=password -o PubkeyAuthentication=no username@server_ip

    应提示 Permission denied


7. 防火墙配置(可选)

若启用 UFW 防火墙,允许 SSH 端口(默认 22):

bash 复制代码
sudo ufw allow ssh

注意事项

  • 备份密钥 :私钥(id_ed25519)需妥善保管,丢失将无法登录。
  • 紧急恢复:禁用密码前确保密钥登录可用,否则可能被锁。
  • 配置文件路径 :若修改无效,检查 /etc/ssh/sshd_config.d/ 下的附加配置。

通过以上步骤, Ubuntu 系统将仅允许 SSH 密钥认证,显著提升安全性。

相关推荐
我星期八休息7 小时前
网络编程—NAT、代理服务与内网穿透
linux·服务器·网络·网络协议
RisunJan7 小时前
Linux命令-sysctl(运行时修改内核参数)
linux·网络·智能路由器
yunwei377 小时前
eBPF 教程:使用 fsession 追踪慢速 vfs_read 调用
linux·云原生
A_humble_scholar8 小时前
Linux 网络基础(三)下的 HTTP 核心详解:从请求响应到状态管
linux·网络·http
Albart5758 小时前
Docker Desktop最新版安装踩坑全记录(Windows_Mac_Linux)【2026 4.74.0 终版】
linux·windows·macos·docker·环境搭建·踩坑记录
winfreedoms8 小时前
VMware 桥接模式无法联网:从 DHCPDISCOVER 到静态 IP 的完整排障实战
网络协议·tcp/ip·ubuntu·桥接模式·vmware·嵌入式学习
举手9 小时前
Epoll模型
linux·c++·学习
Escalating_xu9 小时前
【Linux】基础 I/O 深度解析:FILE、文件描述符、open/read/write、重定向与缓冲区
java·linux·服务器
qetfw9 小时前
Debian 部署 Discuz! 论坛:Nginx、PHP 与 MariaDB 配置
linux·运维·nginx·debian·php·discuz
烛之武9 小时前
Linux 命令速查表
linux·运维·服务器