[SSH] .ssh/config & id_rsa
.ssh/config
SSH config 可以簡化 SSH 連線時的指令, 除了 CLI 下使用方便外, CI/CD 配合適當的 config 也可以大幅簡化管理的複雜度.
SSH
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
設定好後, ssh 指令可以由
ssh user@hostname.domain.name -P port -i path-to-key
簡化為
ssh alias-name
ssh key
...TBD...
GitHub SSH key
透過 CLI 存取個人 GitHub repository 時常會設定 SSH Keys. 而若要用兩個不同使用者身分存取專案, GitHub 不允許使用同一把 Key. 必須為個別使用者建立獨立 ssh key 並上傳設定.
這情況下, ssh alias 就變得方便了.
-
依使用者身分設定對應的 SSH host alias 與 IdentityFile
Host kywk.github
Hostname ssh.github.com
User git
IdentityFile ~/.ssh/kywk_rsa
Host cow.github
Hostname ssh.github.com
User git
IdentityFile ~/.ssh/cow_rsa如此一來, 相同主機透過不同 alias 可以指定不同登入帳號及對應的 Key, 使用上相當便利. 如:
ssh kywk.github
就是使用 kywk_rsa 這把 key 來登入 ssh.github.com. -
不同的 git repository 中, 對應的 remote 修改為
[remote "origin"]
url = git@kywk.github:kywk/kywk.github.io.git
fetch = +refs/heads/*:refs/remotes/origin/*[remote "origin"]
url = git@cow.github:cow/sandbox.git
fetch = +refs/heads/*:refs/remotes/origin/*
設置完後, 相同電腦存取不同 Github 帳號的專案, 和一般操作並無太不同.