SSH 連線偷吃步的小技巧,SSH Config

程式技術
sharkHead

當我們需要連線到遠端的伺服器的時候,可以使用 SSH  (Secure Shell) 連線這個工具進行遠端伺服器的登入,基本的 SSH 連線指令如下。

ssh [email protected]

user 為要連線的帳號名稱,host 為要連線的遠端伺服器位址,可以為 IP 或是 Domain name。

指令輸入完畢之後,根據遠端伺服器上的 SSH 設定,可以使用密碼或是金鑰的方式進行認證,認證成功才能登入遠端伺服器。

# 如果使用密碼登入,在輸入指令後還需要輸入密碼
ssh [email protected]
# [email protected]'s password:

在大多情況下,要管理的伺服器可能不只一個,如果數量一多,每次登入都要找對應伺服器的帳號、密碼與金鑰,會是一件很麻煩的事情,雖然可以用 alias 偷吃步。

alias ssh-to-server="ssh user@host"

但 SSH 其實本身就有內建一個更便利的方法 SSH Config。

首先先在 .ssh 資料夾底下建立一個 config 檔案。

touch ~/.ssh/config

之後就可以在 config 中進行設定,假設我們有一個 CRM 的後台伺服器。

Host crm
Hostname 49.159.176.123
User crm-admin
Port 22
identityfile /path/Key.pem
  • Host:連線名稱。
  • Hostname:遠端伺服器的位址。
  • User:帳號。
  • Port:遠端伺服器的  Port 號。
  • identityfile:金鑰檔案位址。

設定完畢之後就可以直接輸入連線名稱就可以連線,少打很多字。

ssh crm

有時候我們的伺服器不會開放對外連線,如果想要連線,必須經由另外一台特定的伺服器當作跳板才能連上,通常這種跳板被稱為 bastion,這個時候可以使用 Proxy Jump 的方式來進行連線。

Host crm
    Hostname 49.159.176.123
    User crm-admin
    Port 22
    identityfile /path/private_key

Host private-crm
    Hostname 192.168.0.54
    User private-crm-admin
    ForwardAgent yes
    ProxyJump crm

上述的設定檔中 private-crm 只能透過 crm 伺服器去連線。

ForwardAgent 這個參數允許讓本地的 SSH Key 在遠端 Server 上進行傳送,但記得要開啟 ssh-agent,並將連線的 SSH Key 加入 ssh-agent

ssh-add /path/private_key

如果你使用 oh-my-zsh,可以在 .zshrc 的 plugin 中加入 ssh-agent,這樣 oh-my-zsh 會自動啟動 ssh-agent。

完成設定之後,就可以使用 ProxyJump 將 crm 設定為跳板,這時候連上 private-crm 就可以簡單一行指令。

ssh private-crm

參考資料

sharkHead
written by
sharkHead

後端打工仔,在下班後喜歡研究各種不同的技術。稍微擅長 PHP,並偶爾涉獵前端開發。個性就像動態語言般隨興,但渴望做事能像囉嗦的靜態語言那樣嚴謹。

0 則留言