696 字
3 分钟
[配置] SSH 免密登录
IMPORTANT

本教程将指导您完成 Linux 服务器与客户端的 SSH 密钥配置,实现安全、便捷的无密码登录体验


Linux 服务器端配置#

NOTE

适用范围:Ubuntu, Debian, CentOS, Rocky, Fedora 等 Linux 发行版

1. 安装 OpenSSH 服务#

Ubuntu / Debian
sudo apt update && sudo apt install openssh-server -y
sudo systemctl enable --now ssh
RHEL / CentOS / Rocky / Fedora
sudo dnf install openssh-server -y
sudo systemctl enable --now sshd

2. 检查 SSHD 配置#

确保公钥认证功能已开启:

修改配置
sudo nano /etc/ssh/sshd_config

确保以下行未被注释:

/etc/ssh/sshd_config
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
配置项说明
  • PubkeyAuthentication yes:允许使用公钥进行身份验证,是实现免密登录的核心开关
  • AuthorizedKeysFile .ssh/authorized_keys:指定存放允许连接的客户端公钥的文件路径,通常位于用户家目录的 .ssh 文件夹下

为什么注释掉也能登录? 现代 OpenSSH 服务通常将上述值作为默认设置,即使配置文件中未显示开启或被注释,系统也会默认执行这些规则。

那还需要取消注释吗? 虽然大部分系统默认支持,但显式取消注释(即手动开启)可以确保配置的唯一性与确定性,防止在某些安全加固或精简版 Linux 发行版中因默认值不同而导致失效。

重启生效
Terminal window
sudo systemctl restart ssh # 或 sshd

基础连接测试#

在配置免密登录前,请确保客户端能够通过传统密码方式成功连接服务器:

基本连接命令
ssh user@10.0.0.56
进阶:配置别名

在客户端修改 ~/.ssh/config 文件,配置后只需输入 ssh myserver 即可连接:

~/.ssh/config
Host myserver
HostName 10.0.0.56
User user
Port 22
IdentityFile ~/.ssh/id_ed25519

免密登录设置#

完成基础连接后,按照以下步骤生成密钥并完成推送:

第一步:生成密钥对#

根据您的客户端平台选择对应命令:

Windows 客户端#

  • 环境检查:在 PowerShell 执行 Get-WindowsCapability -Online | Where-Object Name -like 'OpenSSH.Client*'

  • 生成命令

    Terminal window
    ssh-keygen -t ed25519 -C "windows-client"

Linux 客户端#

  • 环境检查:执行 ssh -V

  • 生成命令

    Terminal window
    ssh-keygen -t ed25519 -C "linux-client"

第二步:推送公钥至服务器#

Windows (PowerShell 管道方式)#

在 PowerShell 中执行以下命令(注意替换 userip):

Windows 推送命令
Get-Content $HOME\.ssh\id_ed25519.pub | ssh user@10.0.0.56 `
"mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"

Linux (ssh-copy-id 方式)#

使用内置的快捷工具:

Linux 推送命令
ssh-copy-id -i ~/.ssh/id_ed25519.pub user@10.0.0.56

配置完成后即可实现无感登录体验


关键权限规范#

WARNING

权限配置错误会导致公钥登录失效,请在 服务器端 严格执行:

文件/目录建议权限命令参考
~ (用户家目录)755chmod 755 ~
~/.ssh700chmod 700 ~/.ssh
~/.ssh/authorized_keys600chmod 600 ~/.ssh/authorized_keys

配置速查表#

角色核心任务关键文件/命令
服务器运行 SSH 服务sshd_config, authorized_keys
Windows 客户端生成并推送公钥ssh-keygen, PowerShell 管道
Linux 客户端生成并推送公钥ssh-keygen, ssh-copy-id

[配置] SSH 免密登录
https://www.eustia-astraea.top/posts/configs/ssh-key-login/
作者
mcsl
发布于
2026-01-16
许可协议
CC BY-NC-SA 4.0