必须完成本地密钥生成、公钥上传、服务端配置启用公钥认证及权限加固四环节:一、用ssh-keygen -t ed25519生成密钥对;二、用ssh-copy-id或手动管道将公钥写入~/.ssh/authorized_keys并设600权限;三、修改sshd_config启用pubkeyauthentication、禁用passwordauthentication、注释usepam yes;四、严格设置~/.ssh为700、authorized_keys为600,最后重启sshd并测试。

要在麒麟系统上实现终端远程SSH免密登录,必须完成本地密钥生成、公钥上传到目标机、服务端配置启用公钥认证、权限加固四个环节,跳过任一环节都会导致连接时仍提示输入密码或直接拒绝认证。
在本地客户端生成ED25519密钥对
打开终端,执行:
ssh-keygen -t ed25519 -C "user@kylin"
连续按三次回车:第一次确认保存路径为默认的~/.ssh/id_ed25519;后两次留空,不设置密码短语——设了会导致每次连接都弹窗要求输入该短语,彻底破坏“免密”目标。
执行ls -l ~/.ssh/id_ed25519*,应看到私钥id_ed25519(权限必须是【600】)和公钥id_ed25519.pub;若私钥权限不是600,OpenSSH会在连接时静默忽略该密钥,你将永远收不到错误提示,只看到密码输入框反复出现。
将公钥上传至麒麟目标机
方法一:用ssh-copy-id自动部署(推荐,前提是目标机已开通密码登录且网络连通)
执行:
ssh-copy-id -i ~/.ssh/id_ed25519.pub user@192.168.1.105(把IP换成你麒麟系统的实际局域网地址)
提示输入密码时,输入目标用户的密码;成功后显示“Number of key(s) added: 1”,表示公钥已写入~/.ssh/authorized_keys并自动设好权限。
方法二:手动管道上传(适用于最小化安装或ssh-copy-id未安装的场景)
执行:
cat ~/.ssh/id_ed25519.pub | ssh user@192.168.1.105 'mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys'
这条命令一次性完成目录创建、权限设置、公钥追加和文件权限锁定;【chmod 600 ~/.ssh/authorized_keys必须执行,否则OpenSSH拒绝读取】。
配置麒麟服务端启用公钥认证
第一步:编辑主配置文件
sudo vim /etc/ssh/sshd_config
第二步:确认以下三行未被注释且值正确:
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
PasswordAuthentication no(可选,禁用密码登录能显著降低暴力破解风险)
第三步:特别注意——【#UsePAM yes这一行必须保持注释状态,麒麟V10中启用该选项会导致所有公钥登录全部失败】。
第四步:重启服务使配置生效
sudo systemctl restart ssh
严格校验服务器端权限与连接测试
① 登录麒麟目标机,进入用户家目录:
cd ~
② 检查.ssh目录权限:
ls -ld .ssh
输出应为drwx------,即权限700;如果不是,立即执行:
chmod 700 .ssh
③ 检查authorized_keys权限:
ls -l .ssh/authorized_keys
输出应为-rw-------,即权限600;如果不是,立即执行:
chmod 600 .ssh/authorized_keys
④ 退出当前会话,在本地终端执行测试:
ssh -i ~/.ssh/id_ed25519 user@192.168.1.105
若全程无密码提示直接进入shell,说明免密登录已成功启用。











