- 工信部備案號 滇ICP備05000110號-1
- 滇公安備案 滇53010302000111
- 增值電信業務經營許可證 B1.B2-20181647、滇B1.B2-20190004
- 云南互聯網協會理事單位
- 安全聯盟認證網站身份V標記
- 域名注冊服務機構許可:滇D3-20230001
- 代理域名注冊服務機構:新網數碼
SSH(Secure Shell)是一種加密網絡協議,用于在客戶端和服務器之間建立加密連接。SSH客戶端創建與遠程SSH服務器之間的安全連接。加密連接可以用來在服務器上執行命令、X11隧道、端口轉發等。
有許多SSH客戶端可供選擇,包括免費的和商業的,其中OpenSSH是最廣泛使用的客戶端。它可在所有主要平臺上使用,包括Linux、OpenBSD、Windows和macOS。
本文解釋了如何使用OpenSSH命令行客戶端(ssh)登錄遠程機器并運行命令或執行其他操作。
OpenSSH 客戶端程序稱為 ssh
,可以從終端調用。OpenSSH 客戶端包還提供了其他 SSH 實用程序,如 scp
和 sftp
,這些程序與 ssh
命令一起安裝。
大多數 Linux 發行版默認預裝了 OpenSSH 客戶端。如果您的系統沒有安裝 ssh
客戶端,可以使用您的發行版包管理器進行安裝。
sudo apt update
sudo apt install openssh-client
sudo dnf install openssh-clients
大多數 Windows 用戶使用 Putty 通過 SSH 連接到遠程機器。然而,最新版本的 Windows 10 包括了 OpenSSH 客戶端和服務器。這兩個包都可以通過 GUI 或 PowerShell 安裝。
要找到 OpenSSH 包的確切名稱,請鍵入以下命令:
Get-WindowsCapability -Online | ? Name -like 'OpenSSH*'
該命令應該返回如下內容:
Name : OpenSSH.Client~~~~0.0.1.0
State : NotPresent
Name : OpenSSH.Server~~~~0.0.1.0
State : NotPresent
一旦您知道了包的名稱,就通過運行以下命令來安裝它:
Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0
成功時輸出將如下所示:
Path :
Online : True
RestartNeeded : False
macOS 默認安裝了 OpenSSH 客戶端。
ssh
命令要能夠通過 SSH 登錄到遠程機器,必須滿足以下要求:
? 遠程機器上必須運行 SSH 服務器。
? 遠程機器的防火墻必須打開 SSH 端口。
? 您必須知道遠程賬戶的用戶名和密碼。該賬戶需要有適當的遠程登錄權限。
ssh
命令的基本語法如下:
ssh [OPTIONS] [USER@]:HOST
要使用 ssh
命令,請打開您的終端或 PowerShell 并鍵入 ssh
,然后是遠程主機名:
ssh ssh.linuxize.com
當您首次通過 SSH 連接到遠程機器時,您將看到如下消息。
The authenticity of host 'ssh.linuxize.com (192.168.121.111)' can't be established.
ECDSA key fingerprint is SHA256:Vybt22mVXuNuB5unE++yowF7lgA/9/2bLSiO3qmYWBY.
Are you sure you want to continue connecting (yes/no)?
每個主機都有一個獨特的指紋,存儲在 ~/.ssh/known_hosts
文件中。
鍵入 yes
以存儲遠程指紋,然后系統會提示您輸入密碼。
Warning: Permanently added 'ssh.linuxize.com' (ECDSA) to the list of known hosts.
dev@ssh.linuxize.com's password:
一旦您輸入密碼,您將登錄到遠程機器。
如果未給出用戶名,ssh
命令將使用當前系統的登錄名。
要以不同的用戶登錄,請按照以下格式指定用戶名和主機:
ssh username@hostname
用戶名也可以使用 -l
選項指定:
ssh -l username hostname
默認情況下,如果沒有給出端口,SSH 客戶端將嘗試在遠程服務器的 22 端口上連接。在某些服務器上,管理員會更改默認 SSH 端口,以通過減少自動化攻擊的風險來增加服務器的安全性。
要在非默認端口上連接,請使用 -p
選項指定端口:
ssh -p 5522 username@hostname
如果您遇到認證或連接問題,請使用 -v
選項告訴 ssh
打印調試消息:
ssh -v username@hostname
要增加詳細程度,可以使用 -vv
或 -vvv
。
ssh
命令接受許多選項。
要獲取所有選項的完整列表,請在終端中鍵入 man ssh
來閱讀 ssh
手冊頁。
如果您每天通過 SSH 連接到多個遠程系統,您會發現記住所有遠程 IP 地址、不同的用戶名、非標準端口和各種命令行選項是很困難的。
OpenSSH 客戶端讀取在每個用戶配置文件(~/.ssh/config
)中設置的選項。在此文件中,您可以為每個連接的遠程機器存儲不同的 SSH 選項。
下面是一個 SSH 配置樣本:
Host dev
HostName dev.linuxize.com
User mike
Port 4422
當您通過鍵入 ssh dev
調用 ssh 客戶端時,命令將讀取 ~/.ssh/config
文件,并使用為 dev 主機指定的連接詳情。在此示例中,ssh dev
等同于以下命令:
ssh -p 4422 mike@dev.linuxize.com
更多信息,請查看有關 SSH 配置文件的文章。
SSH 協議支持各種認證機制。
基于公鑰的認證機制允許您在不必輸入密碼的情況下登錄到遠程服務器。
這種方法通過生成一對用于認證的加密密鑰來工作。私鑰存儲在客戶端設備上,公鑰傳輸到您想要登錄的每個遠程服務器。遠程服務器必須配置為接受密鑰認證。
如果您的本地機器上還沒有 SSH 密鑰對,可以通過鍵入以下命令來生成一個:
ssh-keygen -t rsa -b 4096 -C "your_email@domain.com"
系統將要求您輸入一個安全的密碼短語。是否使用密碼短語,取決于您。
一旦您有了密鑰對,將公鑰復制到遠程服務器:
ssh-copy-id username@hostname
輸入遠程用戶密碼,公鑰將被追加到遠程用戶的 authorized_keys
文件中。
一旦密鑰上傳,您就可以在不被提示輸入密碼的情況下登錄到遠程服務器。
通過設置基于密鑰的認證,您可以簡化登錄過程并提高服務器的整體安全性。
SSH 隧道或 SSH 端口轉發是創建一個加密的 SSH 連接的方法,通過該連接可以將服務端口中繼。
SSH 轉發對于傳輸使用未加密協議的服務(如 VNC 或 FTP)的數據、訪問地理限制內容或繞過中間防火墻非常有用。基本上,您可以轉發任何 TCP 端口,并通過安全的 SSH 連接隧道流量。
SSH 端口轉發有三種類型:
本地端口轉發允許您從客戶端主機轉發連接到 SSH 服務器主機,然后到目標主機端口。
要創建本地端口轉發,請向 ssh
客戶端傳遞 -L
選項:
ssh -L [LOCAL_IP:]LOCAL_PORT:DESTINATION_HOST:DESTINATION_PORT -N -f username@hostname
-f 選項告訴 ssh
命令在后臺運行,-N 不執行遠程命令。
遠程端口轉發與本地端口轉發相反。它從服務器主機轉發端口到客戶端主機,然后到目標主機端口。
-R 選項告訴 ssh
創建遠程端口轉發:
ssh -R [REMOTE:]REMOTE_PORT:DESTINATION:DESTINATION_PORT -N -f username@hostname
動態端口轉發創建一個 SOCKS 代理服務器,允許跨多個端口通信。
要創建動態端口轉發(SOCKS),請向 ssh 客戶端傳遞 -D
選項:
ssh -D [LOCAL_IP:]LOCAL_PORT -N -f username@hostname
有關更詳細的信息和逐步指導,請查看有關如何設置 SSH 隧道(端口轉發)的文章。
要通過 SSH 連接到遠程服務器,請使用 ssh
命令,后跟遠程用戶名和主機名(ssh username@hostname
)。
知道如何使用 ssh
命令對于管理遠程服務器至關重要。
SSH 作為網絡安全連接的關鍵技術,在遠程管理、數據傳輸等場景發揮著不可替代的作用。掌握 OpenSSH 客戶端安裝及 ssh 命令各類操作,無論是運維人員管理服務器,還是開發者遠程協作,都能更加高效、安全地完成任務,為構建穩定、安全的網絡環境奠定堅實基礎 。
想了解更多相關技術小分享可以上藍隊云官網查閱,更多技術問題,也可以直接咨詢。同時,藍隊云整理了運維必備的工具包免費分享給大家使用,需要的朋友可以直接咨詢。
提交成功!非常感謝您的反饋,我們會繼續努力做到更好!
這條文檔是否有幫助解決問題?
售前咨詢
售后咨詢
備案咨詢
二維碼
TOP