在使用git bash命令行的时候,每次push代码到远端的时候,总会需要输入账号和密码。这是因为clone项目到本地的时候,使用的是https的方式提交和验证账号。如果使用ssh秘钥,则可以不用输入账号和密码。
1、生成密钥对
首先看看系统中是否存在ssh秘钥:
# cd ~/.ssh
# ls -a
关键是看有没有用 something 和 something.pub 来命名的一对文件,这个 something 通常就是 id_dsa 或 id_rsa。有 .pub后缀的文件就是公钥,另一个文件则是密钥。假如没有这些文件,或者干脆连 .ssh 目录都没有,可以用 ssh-keygen 来创建。
# ssh-keygen -t rsa -C "your_email@youremail.com"
会提示保存秘钥的文件,直接回车即可
Enter file in which to save the key (/home/you/.ssh/id_rsa):
然后,会提示输入密码。输入的密码和你github的密码无关,随便输入,也可以不输入。
# Enter passphrase (empty for no passphrase):
# Enter same passphrase again:
秘钥生成完成
2、把公钥添加到GitHub
登录到github.com,进入个人设置,选择SSH and GPG keys。把第一步生成的公钥id_rsa.pub里的内容,复制到输入框里,保存即可。
# ssh -T git@github.com #测试秘钥是否可用
验证第一步输入的密码......
Hi xxx! You've successfully authenticated, but GitHub does not # provide shell access.
3、修改不使用https,转而使用ssh
# cd到某个git分支目录下
# git remote -v
origin https://github.com/someaccount/someproject.git (fetch)
origin https://github.com/someaccount/someproject.git (push)
登录到GitHub, 找个这个项目的ssh对应的.git的URL,复制之
# git remote set-url origin git@github.com:someaccount/someproject.git
完成之后,使用git remote -v命令,可以看到已经修改为git@github.com:someaccount/someproject.git
OK,此时再次push代码时,不会再出现输入账号密码了。奇怪的是,可能是因为第一步设置了密码,导致我现在每次提交代码,都需要输入一次密码(账号倒是不用输入了)。
网友评论