如有必要,在 grid 用户的主目录下创建 .ssh 目录并设置相应权限,以确保仅 oracle 用户具有读写权限:
[grid@linuxidc1 ~]$ mkdir ~/.ssh
[grid@linuxidc1 ~]$ chmod 700 ~/.ssh
输入以下命令,为 SSH 协议生成 DSA 密钥对(公共密钥和私有密钥):出现提示时,接受默认的密钥文件位置和无口令短语设置(按 [Enter]):
[grid@linuxidc1 ~]$ /usr/bin/ssh-keygen -t dsa
Generating public/private dsa key pair.
Enter file in which to save the key (/home/grid/.ssh/id_dsa): [Enter]
Enter passphrase (empty for no passphrase): [Enter]
Enter same passphrase again: [Enter]
Your identification has been saved in /home/grid/.ssh/id_dsa.
Your public key has been saved in /home/grid/.ssh/id_dsa.pub.
The key fingerprint is:
7b:e9:e8:47:29:37:ea:10:10:c6:b6:7d:d2:73:e9:03grid@linuxidc1
注:Oracle Clusterware 11g 第 2 版及更高版本不支持使用口令短语的 SSH。Oracle 11g 第 2 版及更高版本必须使用无口令的 SSH。
此命令将 DSA 公共密钥写入 ~/.ssh/id_dsa.pub 文件,将私有密钥写入 ~/.ssh/id_dsa 文件。
绝不要将私钥分发给任何无权执行 Oracle 软件安装的用户。
对您想使其成为集群成员的所有其他使用 DSA 密钥的节点 (linuxidc2) 重复第 1 步到第 4 步。
将所有密钥添加到一个公共 authorized_keys 文件
注:每个节点上 grid 用户的 ~/.ssh/authorized_keys 文件必须包含您在所有集群节点上生成的所有 ~/.ssh/id_dsa.pub 文件中的内容。
在集群中的一个节点上完成以下步骤以生成授权密钥文件,然后分发该文件。对于此文而言,我将使用集群中的主节点 linuxidc1:
从 linuxidc1(本地节点)中确定所有者的主目录 .ssh 中是否存在授权密钥文件 ~/.ssh/authorized_keys。大多数情况下,该文件是不存在的,因为本文假设您正在进行新的安装。如果该文件不存在,那么现在进行创建:
[grid@linuxidc1 ~]$ touch ~/.ssh/authorized_keys
[grid@linuxidc1 ~]$ ls -l ~/.ssh
total 8
-rw-r--r-- 1 grid oinstall 0 Nov 12 12:34 authorized_keys
-rw------- 1 grid oinstall 668 Nov 12 09:24 id_dsa
-rw-r--r-- 1 grid oinstall 603 Nov 12 09:24 id_dsa.pub
在 .ssh 目录中,您会看到前面生成的 id_dsa.pub 密钥以及空白文件 authorized_keys。
在本地节点 (linuxidc1) 上,使用 SCP(安全复制)或 SFTP(安全 FTP)将 ~/.ssh/id_dsa.pub 公共密钥的内容从集群中的两个 Oracle RAC 节点复制到刚才创建的授权密钥文件 (~/.ssh/authorized_keys) 中。同样,从 linuxidc1 进行该操作。系统将提示您为每个访问的 Oracle RAC 节点输入 grid OS 用户帐户口令。
以下示例是在 linuxidc1 节点上运行的,假定集群有两个节点,分别是 linuxidc1 和 linuxidc2:
[grid@linuxidc1 ~]$ ssh linuxidc1 cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
The authenticity of host 'linuxidc1 (192.168.1.151)' can't be established.
RSA key fingerprint is 2f:0d:2c:da:9f:d4:3d:2e:ea:e9:98:20:2c:b9:e8:f5.
Are you sure you want to continue connecting (yes/no) yes
Warning: Permanently added 'linuxidc1,192.168.1.151' (RSA) to the list of known hosts.
grid@linuxidc1'spassword: xxxxx
[grid@linuxidc1 ~]$ ssh linuxidc2 cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
The authenticity of host 'linuxidc2 (192.168.1.152)' can't be established.
RSA key fingerprint is 97:ab:db:26:f6:01:20:cc:e0:63:d0:d1:73:7e:c2:0a.
Are you sure you want to continue connecting (yes/no) yes
Warning: Permanently added 'linuxidc2,192.168.1.152' (RSA) to the list of known hosts.
grid@linuxidc2'spassword: xxxxx
第一次使用 SSH 从某个特定系统连接到节点时,您会看到类似以下的消息:
The authenticity of host 'linuxidc1 (192.168.1.151)' can't be established.
RSA key fingerprint is 2f:0d:2c:da:9f:d4:3d:2e:ea:e9:98:20:2c:b9:e8:f5.
Are you sure you want to continue connecting (yes/no) yes
在该提示下输入 yes 继续。于是,会将公共主机名添加到 ~/.ssh 目录下的 known_hosts 文件中,以后再从此系统连接到相同节点时就不会看到此消息了。
[grid@linuxidc1 ~]$ scp ~/.ssh/authorized_keys linuxidc2:.ssh/authorized_keys
grid@linuxidc2'spassword: xxxxx
authorized_keys 100% 1206 1.2KB/s 00:00
通过登录到节点并运行以下命令,为集群中的两个 Oracle RAC 节点更改授权密钥文件的权限:
[grid@linuxidc1 ~]$ chmod 600 ~/.ssh/authorized_keys
在集群节点上启用 SSH 用户等效性
将包含所有公共密钥的 authorized_keys 文件复制到集群中的每个节点之后,完成本节中的各个步骤以确保正确配置了集群成员节点之间的无口令 SSH 连接。在本示例中,将使用名为 grid 的 Oracle Grid Infrastructu