Linux 中 SSH 命令的基本用法和配置


安全外殼 (SSH) 是一種流行的協議,用於安全地透過網際網路訪問遠端系統。它在本地計算機和遠端計算機之間提供安全、加密的通訊通道,使其成為遠端管理、檔案傳輸和隧道傳輸的絕佳工具。

在本文中,我們將介紹 SSH 在 Linux 中的基本用法和配置。

安裝和啟用 SSH

在深入使用 SSH 之前,讓我們確保它已安裝並在您的 Linux 機器上啟用。

要在 Ubuntu、Debian 或其他基於 Debian 的發行版上安裝 SSH,您可以執行以下命令:

sudo apt-get install openssh-server

在基於 Red Hat 的系統(如 CentOS、Fedora 或 Red Hat Enterprise Linux)上,您可以使用以下命令:

sudo yum install openssh-server

安裝 SSH 後,您可以使用以下命令啟動 SSH 守護程式來啟用它:

sudo systemctl start sshd

要確保 SSH 在啟動時自動啟動,請執行以下命令:

sudo systemctl enable sshd

連線到遠端主機

要使用 SSH 連線到遠端主機,您需要知道其 IP 地址或主機名。獲得此資訊後,您可以使用 ssh 命令啟動連線。

ssh 命令的基本語法如下:

ssh [username]@[hostname or IP address]

例如,要以使用者 john 的身份連線到 IP 地址為 192.168.1.100 的遠端主機,您可以使用以下命令:

ssh john@192.168.1.100

如果這是您第一次連線到遠端主機,您可能會看到如下所示的訊息:

無法建立主機“192.168.1.100 (192.168.1.100)”的真實性。

ECDSA 金鑰指紋為 SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx。

您確定要繼續連線嗎 (yes/no)?

顯示此訊息是為了確認您信任遠端主機。如果您確定要連線,請輸入 yes。

然後系統會提示您輸入您要連線到的使用者的密碼。輸入正確的密碼後,您將登入到遠端主機。

使用 SSH 傳輸檔案

SSH 的另一個有用功能是在兩臺計算機之間安全地傳輸檔案。要使用 SSH 傳輸檔案,您可以使用 scp 命令。

scp 命令的基本語法如下:

scp [options] [source] [destination]

例如,要將名為 example.txt 的檔案從本地計算機複製到 IP 地址為 192.168.1.100 的遠端計算機並在 /home/john 目錄中儲存它,您可以使用以下命令:

scp example.txt john@192.168.1.100:/home/john

要將檔案從遠端計算機複製到本地計算機,您可以反轉源和目標引數,如下所示:

scp john@192.168.1.100:/home/john/example.txt .

在此示例中,命令末尾的點 (.) 將當前工作目錄指定為目標。

生成 SSH 金鑰

SSH 金鑰是登入遠端主機的一種更安全的方式,因為它消除了對密碼的需求。取而代之的是,使用由公鑰和私鑰組成的金鑰對對使用者進行身份驗證。

要在本地計算機上生成 SSH 金鑰對,您可以使用 ssh-keygen 命令。命令的基本語法如下:

ssh-keygen [options] [filename]

預設情況下,ssh-keygen 會建立一個具有 2048 位 RSA 金鑰的金鑰對。私鑰儲存在 ~/.ssh/id_rsa 檔案中,公鑰儲存在 ~/.ssh/id_rsa.pub 檔案中。

如果要使用不同的金鑰型別或大小,可以分別指定 -t 和 -b 選項。例如,要生成 4096 位 Ed25519 金鑰,您可以使用以下命令:

ssh-keygen -t ed25519 -b 4096

生成 SSH 金鑰對後,您可以使用 ssh-copy-id 命令將公鑰複製到遠端主機。命令的基本語法如下:

ssh-copy-id [username]@[hostname or IP address]

例如,要將當前使用者的公鑰複製到 IP 地址為 192.168.1.100 的遠端主機上的使用者 john,您可以使用以下命令:

ssh-copy-id john@192.168.1.100

系統會提示您輸入遠端使用者的密碼。輸入正確的密碼後,公鑰將新增到遠端主機上的 authorized_keys 檔案中。

從現在開始,您可以使用 SSH 金鑰登入到遠端主機,而無需輸入密碼。

配置 SSH

SSH 可以透過 ssh_config 檔案進行配置,該檔案位於 /etc/ssh/ 目錄中。此檔案包含適用於從機器發起的全部 SSH 連線的全域性配置選項。

您還可以建立 ~/.ssh/ 目錄中的配置檔案來為單個主機指定配置選項。

配置檔案使用以下語法:

Host [hostname or IP address]
   [option] [value]

例如,要指定 SSH 在連線到遠端主機時應使用特定的身份檔案,您需要將以下行新增到配置檔案中:

Host myserver
   IdentityFile ~/.ssh/mykey

在此示例中,myserver 是遠端主機的主機名或 IP 地址,而 ~/.ssh/mykey 是本地計算機上私鑰檔案的路徑。

您還可以使用配置檔案設定其他選項,例如埠號、使用者名稱和壓縮級別。

除了本文介紹的基本用法和配置外,SSH 還提供了一些其他功能和選項,您可能會發現它們很有用。

SSH 隧道

SSH 隧道,也稱為 SSH 埠轉發,允許您將流量從機器上的本地埠轉發到遠端機器上的埠。這對於訪問本地網路無法直接訪問的服務很有用。

建立 SSH 隧道的基本語法如下:

ssh -L [local port]:[remote host]:[remote port] [username]@[remote host]

例如,要將流量從本地機器上的埠 8080 轉發到 IP 地址為 192.168.1.100 的遠端伺服器上的埠 80,您可以使用以下命令:

ssh -L 8080:localhost:80 john@192.168.1.100

建立隧道後,您可以透過在 Web 瀏覽器中導航到 https://:8080 來訪問遠端服務。

用於多個主機的 SSH 配置

如果需要使用 SSH 連線到多個遠端主機,您可能會發現為 ~/.ssh/config 檔案中的每個主機建立單獨的配置很有用。

要為特定主機建立配置,您可以將 Host 部分新增到配置檔案中。例如,要為主機名 webserver 的主機建立配置,您可以將以下行新增到配置檔案中:

Host webserver
   HostName 192.168.1.100
   User john
   IdentityFile ~/.ssh/mykey

在此示例中,HostName 指定遠端主機的 IP 地址或主機名,User 指定遠端使用者名稱,而 IdentityFile 指定本地計算機上私鑰檔案的路徑。

然後,您可以使用以下命令連線到遠端主機:

ssh webserver
SSH Authentication Agents

SSH 身份驗證代理允許您將 SSH 金鑰儲存在記憶體中,並使用它們對多個遠端主機進行身份驗證,而無需每次都輸入密碼短語。

要啟用 SSH 身份驗證代理,您可以使用以下命令:

eval $(ssh-agent)

這將啟動 SSH 代理並列印代理程序 ID (PID)。然後,您可以使用 ssh-add 命令將您的私鑰新增到代理中:

ssh-add ~/.ssh/mykey

將金鑰新增到代理後,您可以連線到遠端主機,而無需每次都輸入密碼短語。

結論

SSH 是一種強大的工具,可用於安全地訪問遠端系統並在計算機之間傳輸檔案。通過了解 SSH 的基本用法和配置,您可以利用其功能使您的工作流程更高效、更安全。

請務必始終使用強密碼並保護 SSH 金鑰安全,並根據您的具體用例適當地配置 SSH。牢記這些最佳實踐,SSH 可以成為遠端管理和檔案傳輸的寶貴工具。

更新於: 2023年4月10日

2K+ 閱讀量

開啟你的職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.