How to setup SSH config :使用 SSH 設定檔簡化指令與連線網址
以前用 win 7 的時候要 clone git repository,不知怎麼著吃不到 id_rsa 以外的 key,索性用 SSH config 設定 alias 解決這件事,設定也非常簡單,試用了 config 後筆者認為好處有這些:
- SSH 連線抓不到 id_rsa 以外的 key
- 懶得每次都要加上 pem 檔路徑
- 不想讓 SSH指令上顯示 pem 檔路徑,譬如像跑 CI 測試時,大家都可以看到 repo 上的 test 動作與指令,用 alias 取代 pem 檔的路徑
- git repository 的 host 有可能變動
- 有兩個以上不同 email 的 SSH key 需要管理
那就開始設定 step by step 吧!
第一步
首先,在 ~/.ssh 下新增 config 檔案,不需任何副檔名
第二步
在新增的檔案裡加上你的第一個 SSH config
Host alias-name # 用來連線的 alias 名稱
HostName server.name # host domain 或 ip
Port port-number # host 的 SSH port
IdentitiesOnly yes # 使用指定的 key
IdentityFile ~/.ssh/private_ssh_file # 指定 pem 或 pub 的 key 路徑
User username-on-remote-machine # (選填)登入 SSH 的 username,
# 只連 git 的話,可以不必要
ForwardX11 yes # (選填) 啟用回傳 GUI
譬如真正 config 像這樣:
Host gitlab
Hostname www.awonwon.com
IdentityFile ~/.ssh/gitlab
IdentitiesOnly yes
Port 22
User git
ForwardX11 yes
第三步
開始使用 alias 來 SSH 連線
使用範例(alias-name 跟 user-name 自行代入唷):
- 基本 SSH 連線
$ ssh alias-name
- SSH 連線再附加其他指令
$ ssh alias-name mkdir wahaha
- scp 指定 SSH name
$ scp -r ./ alias-name:/var/www/html/project/
- git clone repositroy 時,使用 alias ssh url,git url 有兩種表示法,而如果 config 有設定 user 就不用加上 user-name,下面一併附上不加 user 的寫法
第一種含 ssh protocol
$ git clone ssh://alias-name/project.git
$ git clone ssh://user-name@alias-name/project.git第二種(推薦,較簡潔)
$ git clone alias-name:project.git
$ git clone user-name@alias-name:project.git
如果出現以下錯誤訊息:
Bad owner or permissions on /home/user/.ssh/config
請將 config 檔案設置比較小的權限:
$ chmod 600 config
剩下的就交由讀者自由發揮囉!
因為我用的設定不多,有需要可以參考 man page 更多的設定:
https://linux.die.net/man/5/ssh_config
噢,天啊!我真的達成一個月一篇文章了(雖然現在也才第二個月),希望繼續保持啊哈哈~~