一、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自动应答脚本,或通过用户集中化管理(所有用户集中在一台服务器上)实现。
练习与实验
- 在两台虚拟机之间配置 SSH 免密登录:生成密钥、分发公钥、验证
ssh与scp均无需密码。
此处评论已关闭