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 可以成為遠端管理和檔案傳輸的寶貴工具。
資料結構
網路
關係型資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP