一、SSH 等效性(免密登录)

4.1 原理与用途

SSH 等效性的核心是非对称密钥对:本地生成一对密钥,私钥由自己持有,公钥分发到目标主机。两端密钥匹配即可完成认证,从而实现 SSH 远程连接时无需输入密码。

4.2 生成密钥对

ssh-keygen

三次回车生成空密码的密钥对。交互过程:

Generating public/private rsa key pair.
Enter file in which to save the key (/home/oracle/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:

生成的文件位于 ~/.ssh/:

ls /root/.ssh/
文件 说明
id_rsa 私钥,相当于钥匙,需妥善保管
id_rsa.pub 公钥,相当于锁,可分发
authorized_keys 存放已授权客户端的公钥
known_hosts 记录过去连接过的主机 IP/公钥指纹

支持的加密算法:

ssh-keygen -t rsa          # 默认 RSA
ssh-keygen -t dsa          # DSA

4.3 分发公钥

方法一:使用 ssh-copy-id(推荐)

ssh-copy-id root@10.0.0.20

该命令会自动将本机公钥追加到目标主机的 ~/.ssh/authorized_keys。

方法二:手动 scp

scp /root/.ssh/id_rsa.pub 10.0.0.20:/root/.ssh/authorized_keys

注意:此写法会覆盖目标主机原有的 authorized_keys;若需保留已有公钥,应追加写入。

RHEL 6 上若仍不能免密,可在本地将私钥加入 ssh-agent:

ssh-add /root/.ssh/id_rsa

完成后即可免密登录:

ssh 10.0.0.20

同时 scp 也不再需要密码:

scp localfile 10.0.0.20:/tmp/

4.4 应用场景与安全思考

思考:如果管理 1000 台服务器,能否在一台机器上对所有主机都配置 SSH 等效性,以便脚本批量管理?

结论:

  • 全量配置 SSH 等效性工作量巨大,且安全风险集中:一台被攻破,其余 999 台都失去安全保障。
  • SSH 等效性适用于少量主机间的特殊场景,例如 Oracle RAC 集群中各节点之间必须配置(通常使用 oracle 用户,而非 root)。
  • 大规模服务器管理更适合使用 expect 自动应答脚本,或通过用户集中化管理(所有用户集中在一台服务器上)实现。

练习与实验

  1. 在两台虚拟机之间配置 SSH 免密登录:生成密钥、分发公钥、验证 ssh 与 scp 均无需密码。
最后修改:2026 年 09 月 20 日
如果觉得我的文章对你有用,请随意赞赏