新闻资讯

ssh 配置无密码登录方法是什么?

远程工具 | 2025-11-20

ssh 配置无密码登录的核心方法是基于 SSH 密钥对认证实现,通过在本地生成包含私钥与公钥的密钥对,将公钥上传至远程服务器,后续登录时服务器用公钥验证本地私钥,无需输入密码即可完成安全认证。主流实现方式有自动化的ssh-copy-id命令配置法与手动上传公钥法,配合向日葵等工具可进一步简化操作流程。

一、核心原理:ssh 无密码登录如何实现安全认证?

ssh 无密码登录并非取消认证,而是用非对称加密替代密码验证。本地生成的私钥需妥善保管,公钥可公开传输至远程服务器。登录时,远程服务器向本地发送随机字符串,本地用私钥加密后回传,服务器用预存的公钥解密,验证通过则建立 ssh 连接。这种方式既避免了密码传输的安全风险,又能通过密钥权限控制保障登录安全,是 ssh 远程登录的推荐方案。

二、自动化配置:ssh-copy-id 命令如何快速实现无密码登录?

1. 第一步:本地生成 SSH 密钥对
操作场景:Linux、macOS 终端或 Windows 的 WSL、Git Bash 环境,无需额外安装工具。
实操步骤:
① 执行密钥生成命令:ssh-keygen -t rsa -b 4096 -C "your_note"。其中-t rsa指定密钥类型为 RSA,-b 4096设置 4096 位密钥长度提升安全性,-C后的注释可填邮箱或设备标识,便于区分密钥用途。
② 连续按回车完成配置:提示 “Enter file in which to save the key” 时默认保存至~/.ssh/id_rsa;提示 “Enter passphrase” 时可设置密钥密码(增强私钥安全性,丢失后需密码解锁),也可直接回车跳过。
③ 验证生成结果:执行ls ~/.ssh/,可见id_rsa(私钥)与id_rsa.pub(公钥)两个文件,私钥默认权限为 600,需确保不被其他用户访问。
2. 第二步:上传公钥至远程服务器
核心命令:ssh-copy-id 远程用户名@服务器IP,该命令会自动完成公钥传输与配置。
实操步骤:
① 输入命令:例如ssh-copy-id admin@192.168.1.100,将本地公钥上传至用户admin的服务器。
② 首次执行需验证服务器指纹,输入 “yes” 后回车,再输入远程用户的密码(仅需一次)。
③ 命令执行成功会提示 “Number of key (s) added: 1”,表示公钥已追加至服务器~/.ssh/authorized_keys文件中。
3. 第三步:测试 ssh 无密码登录
执行ssh 远程用户名@服务器IP,如ssh admin@192.168.1.100,无需输入密码即可直接登录,表明配置成功。若设置了密钥密码,需输入密钥密码解锁私钥,而非服务器用户密码。

三、手动配置:无 ssh-copy-id 命令时如何操作?

1. 本地生成密钥对(同自动化方法第一步)
执行ssh-keygen -t rsa -b 4096生成密钥对,复制公钥内容:cat ~/.ssh/id_rsa.pub,全选输出文本并复制。
2. 手动上传并配置公钥
实操步骤:
① 先用密码登录远程服务器:ssh 远程用户名@服务器IP,输入密码进入终端。
② 创建.ssh 目录并设置权限:执行mkdir -p ~/.ssh确保目录存在,再用chmod 700 ~/.ssh设置权限(仅当前用户可读写执行)。
③ 编辑 authorized_keys 文件:执行vim ~/.ssh/authorized_keys,按i进入编辑模式,粘贴本地复制的公钥内容,按Esc后输入:wq保存退出。
④ 修复文件权限:执行chmod 600 ~/.ssh/authorized_keys,确保文件仅当前用户可读写,这是 ssh 密钥认证的强制要求,权限错误会直接导致认证失败。
⑤ 退出服务器:执行exit返回本地终端,测试登录:ssh 远程用户名@服务器IP,验证无密码登录效果。

四、工具辅助:向日葵如何简化 ssh 无密码登录配置?

对于不熟悉命令行的用户,向日葵的图形化界面可降低配置难度,同时优化 ssh 连接稳定性。
实操步骤:
① 下载安装向日葵软件(官网地址:https://sunlogin.oray.com/download ),分别在本地与远程服务器安装客户端并登录同一账号。
② 在本地向日葵客户端 “设备列表” 找到目标服务器,点击 “远程工具”→“SSH”,进入 ssh 配置界面。
③ 切换至 “密钥认证” 选项卡,点击 “导入私钥”,选择本地~/.ssh/id_rsa文件,或直接粘贴公钥内容,点击 “保存” 完成配置。
④ 后续点击 “连接” 即可直接建立 ssh 无密码登录会话,向日葵会自动处理密钥验证与链路优化,同时支持文件传输与服务器性能监控。
图片alt

五、故障排查:ssh 无密码登录失败如何解决?

1. 最常见:文件权限错误
服务器端~/.ssh目录权限必须为 700,authorized_keys文件权限必须为 600,执行以下命令修复:
chmod 700 ~/.ssh && chmod 600 ~/.ssh/authorized_keys。
本地私钥id_rsa权限需为 600,执行chmod 600 ~/.ssh/id_rsa修正。
2. 配置文件未启用密钥认证
登录服务器编辑/etc/ssh/sshd_config,确保以下配置项未被注释且值正确:
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
修改后重启 ssh 服务:sudo systemctl restart sshd。
3. SELinux 限制导致认证失败
部分 Linux 系统启用 SELinux 会阻止 ssh 读取密钥文件,执行restorecon -R -v ~/.ssh修复文件上下文,或临时关闭 SELinux 测试:setenforce 0。


拓展阅读

1. 设置密钥密码后如何避免重复输入? 用ssh-agent临时保管解密后的私钥,本地执行eval $(ssh-agent -s)启动代理,再执行ssh-add ~/.ssh/id_rsa输入密钥密码,当前会话内无需重复输入。

2. 如何为多台服务器配置不同 ssh 密钥? 生成密钥时指定文件名:ssh-keygen -f ~/.ssh/server1_key,登录时用-i指定私钥:ssh -i ~/.ssh/server1_key admin@192.168.1.100。

3. 配置无密码登录后如何进一步加固安全? 登录服务器编辑/etc/ssh/sshd_config,设置PasswordAuthentication no禁用密码登录,仅保留密钥认证,重启 ssh 服务后可彻底防范暴力破解。