跳轉至內容

LPI Linux 認證/安全外殼 (SSH)

來自 Wikibooks,開放世界的開放書籍

詳細目標 (212.3)

[編輯 | 編輯原始碼]

(LPIC-2 版本 4.5)


權重 4


描述: 候選人應該能夠配置 SSH 守護程序。該目標包括管理金鑰和為使用者配置 SSH。候選人還應該能夠透過 SSH 轉發應用程式協議並管理 SSH 登入。


關鍵知識領域

  • OpenSSH 配置檔案、工具和實用程式。
  • 超級使用者和普通使用者的登入限制。
  • 管理和使用伺服器和客戶端金鑰以使用和不使用密碼登入。
  • 使用來自多個主機的多個連線來防止在配置更改後連線到遠端主機的連線丟失。


術語和實用程式

  • ssh
  • sshd
  • /etc/ssh/sshd_config
  • /etc/ssh/
  • 私鑰和公鑰檔案
  • PermitRootLogin, PubKeyAuthentication, AllowUsers, PasswordAuthentication, Protocol

安全外殼 (OpenSSH)

[編輯 | 編輯原始碼]

描述:候選人應該能夠配置 sshd 以允許或拒絕 root 登入,啟用或停用 X 轉發。該目標包括生成伺服器金鑰,生成使用者的公鑰/私鑰對,將公鑰新增到使用者的 authorized_keys 檔案以及為所有使用者配置 ssh-agent。候選人還應該能夠配置埠轉發以透過 ssh 隧道傳輸應用程式協議,配置 ssh 以支援 ssh 協議版本 1 和 2,在系統維護期間停用非 root 登入,配置受信任的客戶端以在沒有密碼的情況下進行 ssh 登入,以及從多個主機進行多個連線以防止在配置更改後連線到遠端主機的連線丟失。

關鍵檔案術語實用程式包括

ssh, sshd
/etc/ssh/sshd_config 
~/.ssh/identity.pub, ~/.ssh/identity
~/.ssh/authorized_keys 
.shosts, .rhosts

OpenSSH 是 SSH (Secure SHell) 協議的免費開源實現。它使用安全的加密網路連線工具替換 telnet、ftp、rlogin、rsh 和 rcp。OpenSSH 支援 SSH 協議的版本 1.3、1.5 和 2.0。

如果您使用 OpenSSH 工具,則可以增強機器的安全性。使用 OpenSSH 工具的所有通訊(包括密碼)都已加密。Telnet 和 ftp 使用明文密碼並以未加密的形式傳送所有資訊。資訊可以被攔截,密碼可以被檢索,然後您的系統可能會被未經授權的人員使用攔截到的密碼之一登入到您的系統而被破壞。在可能的情況下應使用 OpenSSH 實用程式集以避免這些安全問題。使用 OpenSSH 的另一個原因是它會自動將 DISPLAY 變數轉發到客戶端機器。換句話說,如果您在本地機器上執行 X 視窗系統,並且您使用 ssh 命令登入到遠端機器,當您在遠端機器上執行需要 X 的程式時,它將顯示在您的本地機器上。如果您更喜歡圖形系統管理工具但並非始終可以物理訪問您的伺服器,這將非常方便。

ssh 命令是 rlogin、rsh 和 telnet 命令的安全替代品。它允許您登入到遠端機器並執行遠端機器上的命令。

使用 ssh 登入到遠端機器類似於使用 telnet。要登入到名為 penguin.example.net 的遠端機器,請在 shell 提示符處鍵入以下命令:ssh penguin.example.net

第一次使用 ssh 連線到遠端機器時,您將看到類似於以下內容的訊息:無法驗證主機 'penguin.example.net' 的真實性。

DSA key fingerprint is 94:68:3a:3a:bc:f3:9a:9b:01:5d:b3:07:38:e2:11:0c.
Are you sure you want to continue connecting (yes/no)? 
Type yes to continue. This will add the server to your list of known hosts as seen in the following message:
Warning: Permanently added 'penguin.example.net' (DSA) to the list of known hosts.

接下來,您將看到一個提示,要求您輸入遠端機器的密碼。輸入密碼後,您將位於遠端機器的 shell 提示符處。如果您在沒有任何命令列選項的情況下使用 ssh,則您在本地客戶端機器上登入的使用者名稱將被傳遞到遠端機器。如果您想指定不同的使用者名稱,請使用以下命令

ssh -l username penguin.example.net

您也可以使用語法 ssh username@penguin.example.net。ssh 命令可用於在遠端機器上執行命令,而無需登入到 shell 提示符。語法是 ssh hostname command。例如,如果您想在遠端機器 penguin.example.net 上執行命令 ls /usr/share/doc,請在 shell 提示符處鍵入以下命令

ssh penguin.example.net ls /usr/share/doc

輸入正確的密碼後,將顯示 /usr/share/doc 的內容,您將返回到 shell 提示符。

scp 命令可用於透過安全加密連線在機器之間傳輸檔案。它類似於 rcp。

將本地檔案傳輸到遠端系統的通用語法是 scp localfile user@hostname:/newfilename。localfile 指定源,user@hostname:/newfilename 組指定目標。要將本地檔案 shadowman 傳輸到您在 penguin.example.net 上的帳戶,請在 shell 提示符處鍵入以下內容(將 user 替換為您的使用者名稱)

scp shadowman user@penguin.example.net:/home/user

這將把本地檔案 shadowman 傳輸到 penguin.example.net 上的 /home/user/shadowman。將遠端檔案傳輸到本地系統的通用語法是 scp user@hostname:/remotefile /newlocalfile。remotefile 指定源,newlocalfile 指定目標。

可以指定多個檔案作為原始檔。例如,要將目錄 /downloads 的內容傳輸到遠端機器 penguin.example.net 上名為 uploads 的現有目錄,請在 shell 提示符處鍵入以下內容

scp /downloads/* username@penguin.example.net:/uploads/

sftp 實用程式可用於開啟安全互動式 FTP 會話。它類似於 ftp,但使用安全加密連線。通用語法是 sftp username@hostname.com。驗證後,您可以使用一組類似於使用 FTP 的命令。有關這些命令的列表,請參閱 sftp 手冊頁。要閱讀手冊頁,請在 shell 提示符處執行命令 man sftp。sftp 實用程式僅在 OpenSSH 版本 2.5.0p1 及更高版本中可用。

生成金鑰對

[編輯 | 編輯原始碼]

如果您不想每次 ssh、scp 或 sftp 到遠端機器時都輸入密碼,則可以生成授權金鑰對。

注意:單獨的授權金鑰對 必須為 SSH 協議 1 (RSA) 和 SSH 協議 2 (DSA) 建立單獨的授權金鑰對。

警告 :每個使用者都需要他們自己的金鑰對 !

必須為每個使用者生成金鑰。要為使用者生成金鑰,請按照以下步驟操作,操作使用者是想要連線到遠端機器的使用者。如果您以 root 身份完成以下步驟,則只有 root 才能使用這些金鑰。

使用以下步驟生成 DSA 金鑰對。DSA 由 SSH 協議 2 使用,是 Red Hat 的預設協議。1. 要生成用於與協議版本 2.0 配合使用的 DSA 金鑰對,請在 shell 提示符處鍵入以下命令

ssh-keygen -t dsa

接受 ~/.ssh/id_dsa 的預設檔案位置。輸入與您的帳戶密碼不同的密碼,然後再次輸入以確認。

(密碼是用於驗證使用者的單詞和字元的字串。密碼與密碼的不同之處在於,您可以在密碼中使用空格或製表符。密碼通常比密碼更長,因為它們通常是短語而不是僅僅是一個詞。)

2. 使用命令 chmod 755 ~/.ssh 更改 .ssh 目錄的許可權。

3. 將 ~/.ssh/id_dsa.pub 的內容複製到你要連線的機器上的 ~/.ssh/authorized_keys2 中。如果 ~/.ssh/authorized_keys2 檔案不存在,你可以將 ~/.ssh/id_dsa.pub 檔案複製到另一臺機器上的 ~/.ssh/authorized_keys2 檔案中。

使用以下步驟為 SSH 協議的 2.0 版本生成 RSA 金鑰對。

1. 要生成用於與協議版本 2.0 配合使用的 RSA 金鑰對,請在 shell 提示符下鍵入以下命令

ssh-keygen -t rsa

接受預設的檔案位置 ~/.ssh/id_rsa。輸入一個與您的帳戶密碼不同的密碼短語,然後再次輸入以確認。[1]

2. 使用命令 chmod 755 ~/.ssh 更改 .ssh 目錄的許可權。

3. 將 ~/.ssh/id_rsa.pub 的內容追加到你要連線的機器上的 ~/.ssh/authorized_keys2 中。如果 ~/.ssh/authorized_keys2 檔案不存在,你可以將 ~/.ssh/id_rsa.pub 檔案複製到另一臺機器上的 ~/.ssh/authorized_keys2 檔案中。

使用以下步驟生成 RSA 金鑰對,它由 SSH 協議的版本 1 使用。

1. 要生成 RSA(用於版本 1.3 和 1.5 協議)金鑰對,請在 shell 提示符下鍵入以下命令

ssh-keygen

接受預設的檔案位置 (~/.ssh/identity)。輸入一個與您的帳戶密碼不同的密碼短語。再次輸入以確認密碼短語。

2. 使用命令 chmod 755 ~/.ssh 和 chmod 644 ~/.ssh/identity.pub 更改 .ssh 目錄和金鑰的許可權。

3. 將 ~/.ssh/identity.pub 的內容複製到你要連線的機器上的 ~/.ssh/authorized_keys 檔案中。如果 ~/.ssh/authorized_keys 檔案不存在,你可以將 ~/.ssh/identity.pub 檔案複製到遠端機器上的 ~/.ssh/authorized_keys 檔案中。

您可以透過 SSH 轉發 X11 埠以啟用加密的 X11 連線。無需匯出 DISPLAY 變數或呼叫 xhost 實用程式。

在伺服器端,您必須檢查 /etc/ssh/sshd_config 檔案,以確保 “X11Forwarding” 選項設定為 “yes”。

在客戶端,使用 -X 選項 

ssh -X user@remotehost

當遠端主機提示出現時,啟動 X11 應用程式

xterm &

來自遠端主機的 xterm 視窗將在您的本地桌面上開啟。


華夏公益教科書