以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
的链接。