跳至內容跳至頁面導覽:上一頁 [access key p]/下一頁 [access key n]
documentation.suse.com / SUSE Linux Enterprise High Availability Extension 文件 / 管理指南 / 附錄 / 在沒有 root 存取權限的情況下執行叢集報告
適用範圍 SUSE Linux Enterprise High Availability Extension 15 SP2

D 在沒有 root 存取權限的情況下執行叢集報告

所有叢集節點必須能透過 SSH 互相存取。諸如 crm report (用於疑難排解) 等工具以及 Hawk2 的歷程總管,要求節點之間透過無密碼的 SSH 方式來存取,否則它們只能從目前節點收集資料。

如果無密碼 SSH root 存取不符合法規要求,您可以使用一種解決方式來執行叢集報告。該解決方式包括以下基本步驟:

  1. 建立專用的本地使用者帳戶 (用於執行 crm report)。

  2. 為該使用者帳戶設定無密碼 SSH 存取 (最好是使用非標準 SSH 埠)。

  3. 為該使用者設定 sudo

  4. 以該使用者的身分執行 crm report

依預設,crm report 在執行時會先以 root 身分嘗試登入遠端節點,如果無法登入,則嘗試以 hacluster 使用者身分登入。但是,如果您的本地安全規則阻止使用 SSH 進行 root 登入,則所有遠端節點上都無法執行程序檔。即使嘗試以 hacluster 使用者身分執行程序檔也會失敗,因為這是一個服務帳戶,其外圍程序設定為 /bin/false,因此會阻止登入。建立專用的本地使用者是在高可用性叢集中所有節點上成功執行 crm report 程序檔的唯一可行做法。

D.1 建立本地使用者帳戶

在以下範例中,我們將透過指令行建立名為 hareport 的本地使用者。密碼可以是符合安全要求的任何值。或者,您也可以使用 YaST 建立使用者帳戶並設定密碼。

程序 D.1︰ 建立用於執行叢集報告的專用使用者帳戶
  1. 啟動外圍程序,然後建立使用者 hareport (其主目錄為 /home/hareport ):

    root # useradd -m -d /home/hareport -c "HA Report" hareport
  2. 為該使用者設定密碼:

    root # passwd hareport
  3. 依照提示輸入該使用者的密碼兩次。

重要
重要:需要在每個叢集節點上使用同一個使用者

若要在所有節點上建立相同的使用者帳戶,請在每個叢集節點上重複上述步驟。

D.2 設定無密碼 SSH 帳戶

程序 D.2︰ 為非標準埠設定 SSH 精靈

SSH 精靈與 SSH 用戶端預設會在埠 22 上通訊和監聽。如果您的網路安全指導方針要求將預設 SSH 埠變更為編號較高的替代埠,則您需要修改精靈的組態檔案 /etc/ssh/sshd_config

  1. 若要修改預設埠,請在該檔案中搜尋 Port 行,取消註解該行,然後視需要進行編輯。例如,可將該行設定為:

    Port 5022
  2. 如果您的組織不允許 root 使用者存取其他伺服器,請在該檔案中搜尋 PermitRootLogin 項目,取消註解該項目,然後將它設定為 no

    PermitRootLogin no
  3. 或者,執行以下指令以在該檔案的末尾新增相應行:

    root # echo “PermitRootLogin no” >> /etc/ssh/sshd_config
    root # echo “Port 5022” >> /etc/ssh/sshd_config
  4. 修改 /etc/ssh/sshd_config 後,重新啟動 SSH 精靈以使新的設定生效:

    root # systemctl restart sshd
重要
重要:需要在每個叢集節點上使用相同的設定

在每個叢集節點上重複上述 SSH 精靈組態。

程序 D.3︰ 為非標準埠設定 SSH 用戶端

若要在叢集中的所有節點上進行 SSH 埠變更,一種有效的做法是修改 SSH 組態檔案 /etc/ssh/sshd_config

  1. 若要修改預設埠,請在該檔案中搜尋 Port 行,取消註解該行,然後視需要進行編輯。例如,可將該行設定為:

    Port 5022
  2. 或者,執行以下指令以在該檔案的末尾新增相應行:

    root # echo “Port 5022” >> /etc/ssh/ssh_config
注意
注意:只需在一個節點上進行設定

只需在要執行叢集報告的節點上設定上述 SSH 用戶端組態。

或者,您可以使用 -X 選項並配合自訂 SSH 埠來執行 crm report,甚至可以將 crm report 指定為預設使用自訂 SSH 埠。如需詳細資料,請參閱程序 D.5 「使用自訂 SSH 埠產生叢集報告」

程序 D.4︰ 設定 SSH 共用金鑰

您可以使用 SSH 來存取其他伺服器,系統不會要求您輸入密碼。這種存取方法看上去似乎並不安全,但其實十分安全,因為使用者只能存取已共用其公用金鑰的伺服器。共用金鑰必須以使用該金鑰的使用者身分來建立。

  1. 使用您為了執行叢集報告而建立的使用者帳戶 (在上述範例中,該使用者帳戶為 hareport) 登入某個節點。

  2. 產生新金鑰:

    hareport > ssh-keygen –t rsa

    此指令預設會產生 2048 位元金鑰。金鑰的預設位置為 ~/.ssh/。系統會提示您在該金鑰中設定一個密碼片語。但請勿輸入密碼片語,因為要進行無密碼登入,就不能對金鑰設定密碼片語。

  3. 產生金鑰之後,將公用金鑰複製到其他每個節點 (包括建立了該金鑰的節點):

    hareport > ssh-copy-id -i ~/.ssh/id_rsa.pub HOSTNAME_OR_IP

    在該指令中,您可以使用每個伺服器的 DNS 名稱、別名或 IP 位址。在複製過程中,系統會要求您接受每個節點的主機金鑰,並且您需要提供 hareport 使用者帳戶的密碼 (這次輸入密碼後,以後不再需要輸入)。

  4. 在所有叢集節點上共用金鑰之後,使用無密碼 SSH 來測試您是否能夠以 hareport 使用者的身分登入其他節點:

    hareport > ssh HOSTNAME_OR_IP

    您應會自動連接到遠端伺服器,而系統不會要求您接受證書或輸入密碼。

注意
注意:只需在一個節點上進行設定

如果您打算每次都從同一個節點執行叢集報告,則在這個節點上執行上述程序便已足夠。否則,您需要在每個節點上重複上述程序。

D.3 設定 sudo

使用 sudo 指令可讓普通使用者在提供或不提供密碼的情況下快速變成 root 和發出指令。可向所有 root 層級指令或者特定的指令授予 Sudo 存取權限。Sudo 通常使用別名來定義整個指令字串。

若要設定 sudo,請使用 visudo (不是 vi) 或 YaST。

警告
警告:不要使用 vi

若要從指令行設定 sudo,必須以 root 身分使用 visudo 來編輯 sudoers 檔案。使用其他任何編輯器可能會導致語法或檔案許可權錯誤,從而阻止 sudo 執行。

  1. root 身分登入。

  2. 若要開啟 /etc/sudoers 檔案,請輸入 visudo

  3. 尋找以下類別:主機別名規格使用者別名規格Cmnd 別名規格Runas 別名規格

  4. 將以下項目新增至 /etc/sudoers 中的相應類別:

    Host_Alias	CLUSTER = alice,bob,charlie 1
    User_Alias HA = hareport 2
    Cmnd_Alias HA_ALLOWED = /bin/su, /usr/sbin/crm report *3
    Runas_Alias R = root 4

    1

    主機別名定義 sudo 使用者有權在哪部伺服器 (或特定範圍內的伺服器) 上發出指令。在主機別名中,可以使用 DNS 名稱或 IP 位址,或者指定整個網路範圍 (例如 172.17.12.0/24)。若要限制存取範圍,應該僅指定叢集節點的主機名稱。

    2

    使用者別名可讓您將多個本地使用者帳戶新增至單一別名。但是,在這種情況下,您可以避免建立別名,因為只會建立一個帳戶。在上述範例中,我們新增了為執行叢集報告而建立的 hareport 使用者。

    3

    指令別名定義該使用者可執行的指令。如果要限制非 root 使用者在使用 sudo 時可以存取的項目,這點將十分有用。在這種情況下,hareport 使用者帳戶需要對指令 crm reportsu 擁有存取權限。

    4

    runas 別名指定指令的執行身分帳戶。在本例中為 root

  5. 搜尋以下兩行:

    Defaults targetpw
    ALL     ALL=(ALL) ALL

    由於這兩行與我們要建立的設定相衝突,因此請將其停用:

    #Defaults targetpw
    #ALL     ALL=(ALL) ALL
  6. 尋找 User privilege specification

  7. 定義上述別名後,接下來可以新增以下規則:

    HA	CLUSTER = (R) NOPASSWD:HA_ALLOWED

    NOPASSWORD 選項確定使用者 hareport 無需提供密碼就能執行叢集報告。

重要
重要:需要在每個叢集節點上使用相同的 sudo 組態

必須在叢集中的所有節點上指定這項 sudo 組態。無需為 sudo 做出其他變更,並且無需重新啟動任何服務。

D.4 產生叢集報告

若要使用上面的設定執行叢集報告,需要以 hareport 使用者的身分登入某個節點。若要啟動叢集報告,請使用 crm report 指令。例如:

root # crm report -f 0:00 -n "alice bob charlie"

此指令將會在指定的節點上擷取從淩晨 0 點開始的所有資訊,並在目前目錄中建立一個名為 pcmk-日期.tar.bz2*.tar.bz2 歸檔。

程序 D.5︰ 使用自訂 SSH 埠產生叢集報告
  1. 使用自訂 SSH 埠時,請搭配使用 -Xcrm report 來修改用戶端的 SSH 埠。例如,如果自訂 SSH 埠為 5022,則使用以下指令:

    root # crm report -X "-p 5022" [...]
  2. 若要為 crm report 永久設定自訂 SSH 連接埠,請啟動互動式 crm 外圍程序:

    crm options
  3. 輸入以下內容:

    crm(live)options#  set core.report_tool_options "-X -oPort=5022"