千家信息网

Linux 配置SSH免密登录 “ssh-keygen”的基本用法

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,1 什么是SSH引用百度百科的说明:SSH 为 Secure Shell的缩写,由 IETF 的网络小组(Network Working Group)所制定;它是建立在应用层基础上的安全协议。SSH
千家信息网最后更新 2026年11月02日Linux 配置SSH免密登录 “ssh-keygen”的基本用法

1 什么是SSH

引用百度百科的说明:

SSH 为 Secure Shell的缩写,由 IETF 的网络小组(Network Working Group)所制定;它是建立在应用层基础上的安全协议。

SSH 是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议。利用 SSH 协议可以有效防止远程管理过程中的信息泄露问题。

SSH最初是UNIX系统上的一个程序,后来又迅速扩展到其他操作平台。

为了在不同平台/网络主机之间的通信安全, 很多时候我们都要通过ssh进行认证. ssh认证方式主要有2种:

① 基于口令的安全认证: 每次登录的时候都要输入用户名和密码, 由于要在网络上传输密码, 可能存在中间人攻击的风险;
② 基于密钥的安全认证: 配置完成后就可以实现免密登录, 这种方式更加安全 -- 不需要在网络上传递口令, 只需要传输一次公钥. 常见的git的ssh方式就是通过公钥进行认证的.

2 配置SSH免密登录

说明: 这里演示所用的服务器操作系统是Cent OS 7. 我们的目标是:

A服务器(172.16.22.131) 能免密登录 B服务器 (172.16.22.132).

注意: ssh连接是单向的, A能免密登录B, 并不能同时实现B能免密登录A.

2.1 安装必需的软件

在操作之前, 先确保所需要的软件已经正常安装.

这里我们需要安装ssh-keygen和ssh-copy-id, 安装方式如下:

# 安装ssh-keygen, 需要确保服务器可以联网. 博主这里已经安装完成, 所以没有做任何事.[root@localhost ~]# yum install -y ssh-keygenLoaded plugins: fastestmirror, langpacksbase               | 3.6 kB 00:00:00  epel               | 3.6 kB 00:00:00  extras              | 2.9 kB 00:00:00  updates              | 2.9 kB 00:00:00  Loading mirror speeds from cached hostfileNo package ssh-keygen available.Error: Nothing to do# 安装ssh-copy-id[root@localhost ~]# yum install -y ssh-copy-id Loaded plugins: fastestmirror, langpacksLoading mirror speeds from cached hostfileNo package ssh-copy-id available.Error: Nothing to do

2.2 ssh-keygen创建公钥-私钥对

(1) 在指定目录下生成rsa密钥, 并指定注释为"shoufeng", 实现示例:

[root@localhost ~]# ssh-keygen -t rsa -f ~/.ssh/id_rsa -C "shoufeng"#        ~密钥类型 ~密钥文件路径及名称 ~ 备注信息Generating public/private rsa key pair.Enter passphrase (empty for no passphrase): # 输入密码, 若不输入则直接回车Enter same passphrase again: # 再次确认密码, 若不输入则直接回车Your identification has been saved in /root/.ssh/id_rsa.Your public key has been saved in /root/.ssh/id_rsa.pub.The key fingerprint is:9a:e3:94:b9:69:c8:e9:68:4b:dc:fa:43:25:7f:53:f1 shoufengThe key's randomart image is:+--[ RSA 2048]----+|     ||   .  ||   o  || . . . E ||  + S.  || . .. .=o  || oo.oB. .  || ..o=o.+   || .++oo+   |+-----------------+

注意: 密钥的文件名称必须是id_xxx, 这里的xxx就是-t参数指定的密钥类型. 比如密钥类型是rsa, 那么密钥文件名就必须是id_rsa.

(2) ssh-keygen常用参数说明:

-t: 密钥类型, 可以选择 dsa | ecdsa | ed25519 | rsa;

-f: 密钥目录位置, 默认为当前用户home路径下的.ssh隐藏目录, 也就是~/.ssh/, 同时默认密钥文件名以id_rsa开头. 如果是root用户, 则在/root/.ssh/id_rsa, 若为其他用户, 则在/home/username/.ssh/id_rsa;

-C: 指定此密钥的备注信息, 需要配置多个免密登录时, 建议携带;

-N: 指定此密钥对的密码, 如果指定此参数, 则命令执行过程中就不会出现交互确认密码的信息了.

举例说明: 同时指定目录位置、密码、注释信息, 就不需要输入回车键即可完成创建:

ssh-keygen -t rsa -f ~/.ssh/id_rsa -N shoufeng -C shoufeng

(3) 前往~/.ssh/目录下查看生成的文件:

# 生成的文件以test_rsa开头, test_rsa是私钥, test_rsa.pub是公钥:[root@localhost .ssh]# lstest_rsa test_rsa.pub# 通过cat命令查看公钥文件: [root@localhost .ssh]# cat id_rsa.pub ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC2JpLMqgeg9jB9ZztOCw0WMS8hdVpFxthqG1vOQTOji/cp0+8RUZl3P6NtzqfHbs0iTcY0ypIJGgx4eXyipfLvilV2bSxRINCVV73VnydVYl5gLHsrgOx+372Wovlanq7Mxq06qAONjuRD0c64xqdJFKb1OvS/nyKaOr9D8yq/FxfwKqK7TzJM0cVBAG7+YR8lc9tJTCypmNXNngiSlipzjBcnfT+5VtcFSENfuJd60dmZDzrQTxGFSS2J34CuczTQSsItmYF3DyhqmrXL+cJ2vjZWVZRU6IY7BpqJFWwfYY9m8KaL0PZ+JJuaU7ESVBXf6HJcQhYPp2bTUyff+vdV shoufeng# 可以看到最后有一个注释内容shoufeng

2.3 ssh-copy-id把A的公钥发送给B

默认用法是: ssh-copy-id root@172.16.22.132, ssh-copy-id命令连接远程服务器时的默认端口是22, 当然可以指定文件、远程主机的IP、用户和端口:

# 指定要拷贝的本地文件、远程主机的IP+用户名+端口号:[root@localhost .ssh]# ssh-copy-id -i ~/.ssh/id_rsa.pub -p 22 root@172.16.22.132/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keysroot@172.16.22.132's password: # 输入密码后, 将拷贝公钥Number of key(s) added: 1Now try logging into the machine, with: "ssh -p '22' 'root@172.16.22.132'"and check to make sure that only the key(s) you wanted were added.

2.4 在A服务器上免密登录B服务器

[root@localhost .ssh]# ssh root@172.16.22.132Last login: Fri Jun 14 08:46:04 2019 from 192.168.34.16 # 登录成功😄

3 扩展说明

3.1 其他方式发送公钥文件

上述2.3步骤是通过ssh-copy-id工具发送公钥文件的, 当然我们也可以通过其他方式实现:

(1) 将A的公钥文件发给B:

通过scp命令将A服务器的 公钥文件 发送到B服务器的用户目录下, 因为还没有配置成功免密登录, 所以期间需要输入B服务器对应用户的密码:

[root@localhost .ssh]# scp id_rsa.pub root@172.16.22.132:/root/.ssh root@172.16.22.132's password: id_rsa.pub           100% 390  0.4KB/s 00:00 

(2) 在B上创建authorized_keys文件:

[root@localhost .ssh]# cd /root/.ssh/[root@localhost .ssh]# lsid_rsa.pub# 通过A服务器的公钥生成"authorized_keys"文件:[root@localhost .ssh]# cat id_rsa.pub >> authorized_keys[root@localhost .ssh]# cat authorized_keys ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC2JpLMqgeg9jB9ZztOCw0WMS8hdVpFxthqG1vOQTOji/cp0+8RUZl3P6NtzqfHbs0iTcY0ypIJGgx4eXyipfLvilV2bSxRINCVV73VnydVYl5gLHsrgOx+372Wovlanq7Mxq06qAONjuRD0c64xqdJFKb1OvS/nyKaOr9D8yq/FxfwKqK7TzJM0cVBAG7+YR8lc9tJTCypmNXNngiSlipzjBcnfT+5VtcFSENfuJd60dmZDzrQTxGFSS2J34CuczTQSsItmYF3DyhqmrXL+cJ2vjZWVZRU6IY7BpqJFWwfYY9m8KaL0PZ+JJuaU7ESVBXf6HJcQhYPp2bTUyff+vdV shoufeng

注意: 上述重定向时使用>>进行追加, 不要用>, 那会清空原有内容.

3.2 文件权限

为了让私钥文件和公钥文件能够在认证中起作用, 需要确保权限的正确性:

① 对于.ssh目录以及其内部的公钥、私钥文件, 当前用户至少要有执行权限, 其他用户最多只能有执行权限.

② 不要图省事设置成777权限: 太大的权限不安全, 而且数字签名也不支持这种权限策略.

③ 对普通用户, 建议设置成600权限: chmod 600 authorized_keys id_rsa id_rsa.pub;

④ 对root用户, 建议设置成644权限: chmod 644 authorized_keys id_rsa id_rsa.pub.

3.3 文件的编辑和查看

在Liunx环境下, 如果要查看、复制私钥、公钥, 以及authorized_keys等文件, 不要使用vim等编辑器打开, 因为它会产生不必要的回车;

应该通过cat、more、less等查看命令把内容打印到终端上, 再作查看、复制等操作.

总结

以上所述是小编给大家介绍的Linux 配置SSH免密登录 "ssh-keygen"的基本用法 ,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

文件 公钥 密钥 登录 用户 服务 服务器 密码 权限 安全 目录 输入 方式 认证 配置 信息 命令 网络 类型 生成 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 小米移动互联网科技园 腾讯阿里互联网科技 狮子座互联网科技 西安互联网科技公司 互联网科技小额贷款 齐家互联网科技有限公司 互联网科技的未来发展 哈尔滨新华互联网科技 中国互联网有什么科技含量 常德市电业局互联网科技部 互联网企业和科技型企业 宁夏众和广鑫互联网科技有限公司 想开互联网科技公司怎么样 互联网公司黑科技创始人 广东工业互联网大赛深圳学泰科技 杭州披云加互联网科技有限公司 下一代互联网重大应用科技园 信承诺互联网科技有限公司 世界互联网科技成果奖 互联网领先科技活动 互联网通讯科技 亿策互联网科技 北京互联网络科技有限公司 金融科技与互联网金融相同和不同 华夏互联网科技业 速维有品互联网信息科技(苏州)有限公司 996高科技互联网公司 神州科技互联网有限公司 互联网硬科技公司 万物互联网智能科技
0