以Ubuntu Server為例
生成SSH
ssh-keygen -t ed25519 -C "your_email@example.com"
如果系統不支持Ed25519算法,使用舊的命令:
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
根據提示生成公私鑰文件,記下位置,默認位于~/.ssh/
路徑下。
添加到Github
登錄GitHub,進入SSH and GPG keys
,New SSH key
添加密鑰,把公鑰(上述帶.pub后綴的)copy進去即可。
測試
ssh -T git@github.com
出現“Hi xx! You’ve successfully authenticated, but GitHub does not provide shell access.”則代表認證成功。可以通過git clone自己賬戶的私有倉庫來確認。
如果遇到“kex_exchange_identification: Connection closed by remote host”,則需要檢查ssh-agent是否運行且密鑰對是否被正確加載。操作如下:
#在后臺啟動ssh-agent
eval "$(ssh-agent -s)"
#添加私鑰,注意這里的私鑰文件名稱是否正確
ssh-add ~/.ssh/id_ed25519
另外:通過https克隆倉庫時,依然會被要求輸入密碼;這是因為配置的免密是SSH的,通過ssh克隆即可,即git@github.com:xx/xx
的鏈接。