在集群節(jié)點上配置無口令的 SSH
要配置無口令的 SSH,必須先在每個集群節(jié)點上生成 RSA 或 DSA 密鑰,然后將所有集群節(jié)點成員上生成的所有密鑰復制到授權密鑰文件 中,該文件在每個節(jié)點上都是相同的。注意,SSH 文件必須只能由 root 用戶、軟件安裝用戶(grid、Oracle)讀取,因為如果其他用戶可以訪問一個私鑰文件,則 SSH 會忽略該文件。以下示例中使用 DSA 密鑰。
-
對于安裝時要使用的 Oracle 軟件安裝所有者(grid、oracle),您必須為每個所有者分別配置無口令的 SSH。
要配置無口令的 SSH,完成以下任務:
在每個節(jié)點上創(chuàng)建 SSH 目錄并生成 SSH 密鑰
在每個節(jié)點上完成以下步驟:
以軟件所有者身份(此例中為 grid 用戶)登錄。
[root@linuxidc1 ~]# su - grid
要確保您是以 grid 登錄的,并驗證用戶 ID 與預期的用戶 ID(即您已為 grid 用戶分配的用戶 ID)一致,輸入 id 和 id grid 命令。確保 Oracle 用戶組和用戶與您當前使用的用戶終端窗口進程的組和用戶 ID 相同。例如:
如有必要,在 grid 用戶的主目錄下創(chuàng)建 .ssh 目錄并設置相應權限,以確保僅 Oracle 用戶具有讀寫權限:
[grid@linuxidc1 ~]$ mkdir ~/.ssh
[grid@linuxidc1 ~]$ chmod 700 ~/.ssh
輸入以下命令,為 SSH 協(xié)議生成 DSA 密鑰對(公共密鑰和私有密鑰):出現(xiàn)提示時,接受默認的密鑰文件位置和無口令短語設置(按 [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 文件。
絕不要將私鑰分發(fā)給任何無權執(zhí)行 Oracle 軟件安裝的用戶。
對您想使其成為集群成員的所有其他使用 DSA 密鑰的節(jié)點 (linuxidc2) 重復第 1 步到第 4 步。
將所有密鑰添加到一個公共 authorized_keys 文件
現(xiàn)在,每個 Oracle RAC 節(jié)點都包含用于 DSA 的公共和私有密鑰,您www.linuxidc.com需要在其中一個節(jié)點上創(chuàng)建一個授權密鑰文件 (authorized_keys)。授權密鑰文件只是一個包含每個用戶(每個節(jié)點)的 DSA 公共密鑰的文件。在授權密鑰文件包含了所有公共密鑰后,將其分發(fā)至集群中的所有其他節(jié)點。
注:每個節(jié)點上 grid 用戶的 ~/.ssh/authorized_keys 文件必須包含您在所有集群節(jié)點上生成的所有 ~/.ssh/id_dsa.pub 文件中的內(nèi)容。
在集群中的一個節(jié)點上完成以下步驟以生成授權密鑰文件,然后分發(fā)該文件。對于此文而言,我將使用集群中的主節(jié)點 linuxidc1:
從 linuxidc1(本地節(jié)點)中確定所有者的主目錄 .ssh 中是否存在授權密鑰文件 ~/.ssh/authorized_keys。大多數(shù)情況下,該文件是不存在的,因為本文假設您正在進行新的安裝。如果該文件不存在,那么現(xiàn)在進行創(chuàng)建:
[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。
在本地節(jié)點 (linuxidc1) 上,使用 SCP(安全復制)或 SFTP(安全 FTP)將 ~/.ssh/id_dsa.pub 公共密鑰的內(nèi)容從集群中的兩個 Oracle RAC 節(jié)點復制到剛才創(chuàng)建的授權密鑰文件 (~/.ssh/authorized_keys) 中。同樣,從 linuxidc1 進行該操作。系統(tǒng)將提示您為每個訪問的 Oracle RAC 節(jié)點輸入 grid OS 用戶帳戶口令。
以下示例是在 linuxidc1 節(jié)點上運行的,假定集群有兩個節(jié)點,分別是 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 從某個特定系統(tǒng)連接到節(jié)點時,您會看到類似以下的消息:
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 繼續(xù)。于是,會將公共主機名添加到 ~/.ssh 目錄下的 known_hosts 文件中,以后再從此系統(tǒng)連接到相同節(jié)點時就不會看到此消息了。
此時,linuxidc1 上的授權密鑰文件 (~/.ssh/authorized_keys) 中含有來自集群中各個節(jié)點的 DSA 公共密鑰。
[grid@linuxidc1 ~]$ ls -l ~/.ssh
total 16
-rw-r--r-- 1 grid oinstall 1206 Nov 12 12:45 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
-rw-r--r-- 1 grid oinstall 808 Nov 12 12:45 known_hosts
我們現(xiàn)在將其復制到集群中的其余節(jié)點。在我們的雙節(jié)點集群示例中,www.linuxidc.com唯一剩下的節(jié)點就是 linuxidc2。使用 scp 命令將授權密鑰文件復制到集群中的所有其余節(jié)點:
[grid@linuxidc1 ~]$ scp ~/.ssh/authorized_keys linuxidc2:.ssh/authorized_keys
grid@linuxidc2'spassword: xxxxx
authorized_keys 100% 1206 1.2KB/s 00:00
通過登錄到節(jié)點并運行以下命令,為集群中的兩個 Oracle RAC 節(jié)點更改授權密鑰文件的權限:
[grid@linuxidc1 ~]$ chmod 600 ~/.ssh/authorized_keys
在集群節(jié)點上啟用 SSH 用戶等效性
將包含所有公共密鑰的 authorized_keys 文件復制到集群中的每個節(jié)點之后,完成本節(jié)中的各個步驟以確保正確配置了集群成員節(jié)點之間的無口令 SSH 連接。在本示例中,將使用名為 grid 的 Oracle Grid Infrastructure 軟件所有者。
當您運行本節(jié)中的測試 SSH 命令時,如果看到除日期和主機名之外的任何其他消息或文本,則 Oracle 安裝將失敗。如果任一節(jié)點提示您輸入口令或口令短語,則驗證節(jié)點上的 ~/.ssh/authorized_keys 文件中包含了正確的公共密鑰并且您已創(chuàng)建了具有同樣組成員關系和 ID 的 Oracle 軟件所有者。進行必要的更改,以確保您在輸入這些命令時只顯示日期和主機名。您應當確保對生成任何輸出或詢問任何問題的登錄腳本的任何部分進行修改,以便它們僅當 shell 是交互式 shell 時才會生效。
在您希望運行 OUI 的系統(tǒng) (linuxidc1) 上,以 grid 用戶身份登錄。
[root@linuxidc1 ~]# su - grid
如果 SSH 配置正確,您將能夠從終端對話使用 ssh 和 scp 命令,而無需提供口令或口令短語。
[grid@linuxidc1 ~]$ ssh linuxidc1 date
Fri Nov 13 09:46:56 EST 2009
linuxidc1
[grid@linuxidc1 ~]$ ssh linuxidc2 date
Fri Nov 13 09:47:34 EST 2009
linuxidc2
如果需要密碼的話,檢查grid文件夾的權限,兩邊節(jié)點目標的權限需要一致,權限太大(比如是777)則需把權限改。ㄈ755) 本文出自:億恩科技【www.cmtents.com】
服務器租用/服務器托管中國五強!虛擬主機域名注冊頂級提供商!15年品質(zhì)保障!--億恩科技[ENKJ.COM]
|