Linux SSH 遠端登入與操作

SSH (Secure Shell) 是加密的遠端登入協定。我們管理 Linux Server 有 99% 的時間都是透過 SSH 連線進去操作的。

遠端登入

語法:ssh [帳號]@[IP位址]

ssh user@192.168.1.100

首次連線時,系統會問你是否信任這台主機的 Fingerprint,輸入 yes 即可。接著輸入密碼就能登入。

指定 Port (-p)

如果伺服器為了安全改了 Port (預設是 22),請用 -p 指定。

ssh -p 2222 user@192.168.1.100

設定 SSH Key 免密碼登入

每次都要打密碼很煩,而且不安全(容易被暴力破解)。 最佳實踐是使用 金鑰對 (Public/Private Key) 登入。

第一步:在「本機」產生金鑰

ssh-keygen -t rsa -b 4096

一路按 Enter 到底即可。 這會你的 ~/.ssh/ 目錄下產生兩個檔案:

  • id_rsa (私鑰):絕對不能給別人!
  • id_rsa.pub (公鑰):這就是要給伺服器的通行證。

第二步:將公鑰上傳到 Server

使用 ssh-copy-id 指令可以自動幫你把公鑰放到 Server 的 ~/.ssh/authorized_keys 裡面。

ssh-copy-id user@192.168.1.100

輸入一次密碼後,以後登入這台 Server 就不需要打密碼了!

設定檔 (~/.ssh/config)

如果你有很多台 Server,IP 跟 Port 都記不住怎麼辦? 你可以編輯 ~/.ssh/config 檔案(如果沒有就建立它)。

Host myweb
    HostName 192.168.1.100
    User ubuntu
    Port 22

Host db-server
    HostName 10.0.0.5
    User admin

以後只要打 ssh myweb 就會自動依照設定連進去了,超方便!

進階技巧:SSH Tunnel (通道)

SSH 還有一個強大的功能叫做 Port Forwarding (連接埠轉發),可以用來穿越防火牆或掛載內網服務。 詳細教學請參考:SSH Tunnel 通道技術詳解 (Local, Remote, Dynamic Forwarding)