SSH 是一種用於安全登錄遠程機器並執行命令的網絡協議。 它的設計和創建旨在在遠程訪問另一台計算機時提供最佳安全性。 每當計算機向網絡發送數據時,ssh 都會自動對其進行加密。
要使用 SSH,目標計算機應安裝 SSH 服務器應用程序,因為 SSH 是客戶端-服務器模型。 默認情況下,SSH 服務器偵聽標準 TCP 端口 22。SSH 客戶端默認可用於所有 Linux 發行版。
在本教程中,我們學習 SSH 命令 在 Linux 帶有使用示例。
先決條件
- 一個 SSH 客戶端
- 一個 SSH 服務器
- 遠程服務器的 IP 地址或名稱
1. 如何通過 SSH 連接到遠程服務器
使用 IP 地址或主機名連接遠程服務器。 要使用 IP 地址連接 ssh,請使用以下命令:
ssh [ IP ADDRESS]
要使用名稱連接到 ssh,請使用以下命令:
ssh [ HOSTNAME ]
為了 example, 要使用 IP 地址 192.168.239.133 連接到遠程主機,命令如下。
$ ssh 192.168.239.133
當您第一次連接到主機時,會出現一條消息,詢問您是否要繼續連接。 輸入 yes,然後輸入遠程主機的密碼。
2. SSH 用戶名
SSH 在嘗試連接時使用遠程服務器的當前用戶。 要使用用戶名連接到 ssh,請使用以下語法。
ssh [USERNAME]@[HOSTNAME/IP ADDRESS]
為了 example, 要連接到 IP 地址為 192.168.239.134 且用戶名為 kali 的遠程主機,請使用以下命令。
$ ssh [email protected]

3. SSH 使用不同的端口號
SSH 服務器默認偵聽 TCP 端口 22,但如果您想更改它,則需要在命令中指定端口。
要使用不同的端口號連接到遠程主機,請使用 -p 標誌,如以下語法所示。
ssh [ IP ADDRESS/HOSTNAME ] -p [ PORT NUMBER ]
為了 example, 要使用端口號 223 連接到 IP 地址為 192.168.239.134 的遠程主機,請使用以下命令。
$ ssh 192.168.239.134 -p 223

4. SSH 無密碼
只需三個簡單的步驟,您就可以使用 ssh 連接到遠程主機,無需密碼。 不輸入密碼登錄遠程服務器所需的三個步驟如下。
生成 SSH 密鑰
要生成 SSH 密鑰,使用 ssh-keygen 來創建公鑰和私鑰。 這些密鑰對用於在客戶端和服務器之間進行身份驗證。
要創建一對密鑰,請在客戶端計算機上輸入以下命令。
$ ssh-keygen -t rsa

Enter 位置和釋義,或按 Enter 使用默認設置。
複製公共 SSH 密鑰
您需要將公共 SSH 密鑰複製到遠程服務器才能使用密鑰對。 要將公共 SSH 密鑰複製到遠程服務器,請在主機上使用以下語法。
ssh-copy-id [USERNAME]@[HOSTNAME/IP ADDRESS]
要從 IP 地址 192.168.239.134 複製 SSH 密鑰,請使用以下命令。
$ ssh-copy-id [email protected]

無需密碼即可遠程登錄
您現在可以使用以下命令在沒有密碼的情況下登錄遠程服務器。
ssh [USERNAME]@[HOSTNAME/IP ADDRESS]
為了 example, 要連接到 IP 地址為 192.168.239.134 且用戶名為 kali 的遠程主機,請使用以下命令。
$ ssh [email protected]

5. 使用 SSH 在遠程服務器上運行命令
ssh 命令可用於登錄遠程服務器。 它還可用於在遠程服務器上執行命令。
通過 ssh 執行命令的基本語法如下。
ssh USER1@SERVER1 COMMAND1
ssh USER1@SERVER1 'COMMAND2'
ssh USER1@SERVER1 'COMMAND1 | COMMAND2'
ssh ADMIN@BOX1 "COMMAND1; COMMAND2; COMMAND3"
要獲取遠程服務器日期和時間,請使用以下語法:
ssh USER1@SERVER1 date
為了 example, 要從 IP 地址為 192.168.239.134 的服務器獲取 kali 用戶的日期,請使用以下命令。
$ ssh [email protected] date

要檢查遠程服務器磁盤空間使用情況,語法如下。
ssh USER1@SERVER1 'df -H'
為了 example, 要從 IP 地址為 192.168.239.134 的服務器獲取 kali 用戶的磁盤空間使用情況,請使用以下命令。
$ ssh [email protected] 'df -H'

要檢查遠程用戶的上次重啟日誌,請使用以下語法。
ssh USER1@SERVER1 "last reboot"
為了 example, 要從 IP 地址為 192.168.239.134 的服務器獲取 kali 用戶的最後一次重啟日誌,請使用以下命令。
$ ssh [email protected] "last reboot"

SSH 命令行選項
讓我們看看 ssh 命令的一些可用選項。
SSH -C
將 -C 選項與 ssh 結合使用以請求對從遠程服務器接收或傳輸的所有數據進行壓縮,如以下語法所示。
ssh -C
[USERNAME]@[HOSTNAME/IP ADDRESS]
例如,
$ ssh -C [email protected]
ssh -v
-v 選項與 ssh 命令一起用於調試 ssh 客戶端。 以下是語法:
$ ssh -v [USERNAME]@[HOSTNAME/IP ADDRESS]
例如,
$ ssh -v [email protected]

ssh -b
-b 選項用於將 IP 地址綁定到 SSH 連接。 IP 地址將用作 SSH 連接的源地址。 當客戶端有兩個以上的 IP 地址並且您可能不知道哪個 IP 地址用於創建到 SSH 服務器的連接時,將使用此選項。
為了 example,
$ ssh -b 192.168.239.133 [email protected]
該命令會將 IP 地址綁定到遠程服務器。 我們可以使用 netstat |grep ssh
命令來檢查連接。

SSH -F
-F 選項與 ssh 命令一起使用來指定每個用戶的配置。 默認配置文件是 ~/.ssh/config。
要使用特定的配置文件,請按以下方式使用 -F 選項。
$ ssh -F [File Location] [USERNAME]@[HOSTNAME/IP ADDRESS]
例如,
$ ssh -F /etc/ssh/ssh_config.d [email protected]
SSH -L
-L 選項用於本地端口轉發。 本地端口轉發允許我們通過代理將流量從我們的主機路由到目標端口。
本地端口轉發的基本語法如下。
ssh -L [LOCAL_IP:]LOCAL_PORT:DESTINATION:DESTINATIONPORT [USERNAME]@[HOSTNAME/IP ADDRESS]
為了 example,運行以下命令連接到遠程主機的kali用戶的3306端口,IP為192.168.239.134,來自localhost 192.168.239.133端口3336。
$ ssh -L 3336:192.168.239.133:3306 [email protected]

SSH -R
-R 選項與 SSH 命令一起使用以啟用遠程端口轉發。 這意味著您可以將遠程服務器上的端口轉發到本地計算機上的端口,然後再轉發到目標計算機上的端口。
遠程端口轉發的基本語法如下。
ssh -R [REMOTE:]REMOTE_PORT:DESTINATION:DESTINATION_PORT
[USERNAME]@[HOSTNAME/IP ADDRESS]
為了 example,
$ ssh -R 3336:192.168.239.133:3000 [email protected]
該命令將使 ssh 在 3336 端口偵聽 ssh 服務器,並將所有流量隧道傳輸到 3000 端口。

ssh -C -D
-D 選項啟用動態端口轉發。 通常的 SOCKS 端口是 1001,但是,可以使用任何端口號; 儘管如此,有些程序只能在 1001 端口上運行。
動態轉發的基本語法如下。
ssh -D [LOCAL_IP:]LOCAL_PORT [USERNAME]@[HOSTNAME/IP ADDRESS]
為了 example,
$ sudo ssh -C -D 1001 [email protected]
-D 指定 1001 端口中的動態端口轉發,-C 啟用壓縮。

SSH -X
-X 選項與 ssh 一起用於 X11 轉發。 以下是 X11 轉發的語法。
ssh -X [USERNAME]@[HOSTNAME/IP ADDRESS]
使用以下命令,在 IP 地址為 192.168.239.134 的 kali 用戶上啟用 X11 轉發。
$ ssh -X 192.168.239.134
SSH -Y
-Y 選項與 ssh 一起用於 Trusted X11 轉發。 這意味著遠程 X11 將可以完全訪問原始 X11 顯示。
ssh -Y [USERNAME]@[HOSTNAME/IP ADDRESS]
使用以下命令,在 IP 地址為 192.168.239.134 的 kali 用戶上啟用 Trusted X11 轉發。
$ ssh -Y 192.168.239.134

ssh -o
-o 選項可以與其他選項一起使用。
為了 example,
$ ssh -o "batchmode=yes" [email protected]
如果使用 ssh -o “batchmode=yes”,如果啟用了無密碼連接,該命令將在遠程計算機上成功運行,否則將返回錯誤。

下表顯示了一些最重要的命令行選項。
選項 | 描述 |
-一個 | 它允許轉發身份驗證代理連接。 |
-一個 | 它禁用要轉發的身份驗證代理連接。 |
-b | 它用於綁定源地址。 |
-C | 它用於數據壓縮。 |
-c cipher_spec | 它選擇加密會話的密碼規範。 |
-D | 它負責動態應用級端口轉發。 |
-E 日誌文件 | 它將調試日誌附加到 log_file 而不是標準錯誤。 |
-F 配置文件 | 它指定了每個用戶的配置文件。 |
-G | 它允許遠程主機連接到本地轉發端口。 |
-i 身份文件 | 它讀取用於公鑰認證的私鑰。 |
-j | 它指定了一個 ProxyJump 配置指令。 |
-l 登錄名 | 它指定登錄到遠程機器的用戶。 |
-p 端口 | 它用於指定連接到遠程主機的端口。 |
-q | 這是安靜模式。 |
-V | 詳細模式。 |
-X | 它啟用 X11 轉發 |
-Y | 它啟用可信 X11 轉發 |
結論
在本教程中,我們學習瞭如何使用 ssh 命令以及有用的示例。 感謝您的閱讀,請在下面的評論部分提供您的反饋和建議。