建立新的SSH密鑰,並添加到ssh-agenthtml
建立密鑰git
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
github
輸入保存密鑰的絕對路徑和文件名,如/Users/Steve/.ssh/new_id_rsashell
Enter a file in which to save the key (/Users/you/.ssh/id_rsa): [Press enter]
app
兩次輸入確認密鑰的密碼ssh
Enter passphrase (empty for no passphrase): [Type a passphrase]
Enter same passphrase again: [Type passphrase again]
gitlab
把密鑰添加到ssh-agent測試
把ssh-agent在後臺啓動spa
eval "$(ssh-agent -s)"
htm
一個帳號不用配置config
配置~/.ssh/config文件,若是沒有該文件,經過touch config命令建立。注意HostName github.com
Host github.com
HostName github.com
AddKeysToAgent yes
UseKeychain yes
IdentityFile ~/.ssh/id_rsa
把私鑰添加到ssh-agent並存入keychain,執行命令會要求你輸入密碼
ssh-add -K ~/.ssh/id_rsa
把公鑰複製到剪貼板
pbcopy < ~/.ssh/id_rsa.pub
進入Github帳戶找到Settings,點擊進入後選擇SSH and GPG keys,點擊New SSH key。在Title框內填入標題,在``框粘貼剛纔複製的公鑰。最後點擊Add SSH key。
測試命令
ssh -vT git@github.com
假設如今有兩個GitHub帳戶,對應兩個SSH密鑰old_id_rsa和new_id_rsa。若是尚未密鑰,分別按上面的步驟建立和添加。
修改config文件以下
# 配置多個id_rsa
# github
Host github.com # Host是別名
HostName github.com # HostName是遠程倉庫的域名
IdentityFile ~/.ssh/github_rsa
AddKeysToAgent yes
# PreferredAuthentications publickey
User yourname@gmail.com
# 公司項目
Host labs.oa.com
HostName labs.oa.com
IdentityFile ~/.ssh/id_rsa
AddKeysToAgent yes
User yourname@qq.com
# fastlane打包證書
Host app.cert.com
HostName labs.oa.com
IdentityFile ~/.ssh/app_rsa
AddKeysToAgent yes
User yourname@163.com
# gitlab倉庫備份
Host gitlab.com
HostName gitlab.com
IdentityFile ~/.ssh/gitlab_rsa
AddKeysToAgent yes
User yourname@live.com
注意:labs.oa.com.app 和 labs.oa.com.cert 在新版本macOS中添加祕鑰時會所有識別爲labs.oa.com,建議讓HostName徹底不一樣
配置完~/.ssh/config後添加祕鑰到ssh-agent中,能夠不用再輸入密碼
ps -ef|grep ssh 查找已經啓動的ssh-agent進程,若是進程存在則幹掉 kill -9 pid
刪除~/.ssh/known_hosts文件,rm -rf ~/.ssh/known_hosts
依次測試可否連通,ssh -T 會自動將祕鑰添加到ssh-agent中
ssh -T github.com
ssh -T gitlab.com
ssh -T labs.oa.com
ssh -T app.cert.com
若是報錯了,能夠使用下面命令查看詳細的報錯信息
ssh -vT git@new.github.com
使用須要注意,git@後要改成對應帳戶的別名。
如new_id_rsa密鑰對應的GitHub帳戶上有個倉庫test.git,且你的GitHub用戶名是username,使用下面命令克隆
git clone git@app.cert.com:username/test.git 設置了別名就不能用原來域名labs.oa.com
避免git錯用密鑰,把git全局的用戶名和郵箱刪除
git config --global --unset user.email
git config --global --unset user.name
刪除後,之後進入每一個倉庫都要指定該倉庫局部的user.mail和user.name。
git config user.email "you@example.com"
git config user.name "Your Name"
還沒完~
若是想要每次啓動電腦都自動啓動ssh-agent,就不用輸入密碼了
自動操做神器登場~~~~~~
一、新建應用程序
二、選擇 shell 腳本類型
三、記得先在控制檯執行一下這些腳本,由於須要輸入密碼,不然會報錯
點擊右上角的運行按鈕執行腳本保證正確性
四、保存爲應用程序
五、設置開機啓動運行腳本
系統-偏好設置-用於與羣組,點擊 + 添加應用程序
完美~
Connecting to GitHub with SSH
Generating a new SSH key and adding it to the ssh-agent
Adding a new SSH key to your GitHub account
Multiple GitHub Accounts & SSH Config