将学习变成乐趣,一直在路上
每天1990

导航

 
git去连接github或gitlab上的远程仓库,可以使用ssh方式,也可以使用git的账号密码登录
这里介绍使用ssh方式实现免登陆(第一步和第二步即可实现)
 

第一步:生成ssh秘钥

ssh-keygen -t rss -C xxx@xx.com
 
也可以不设置邮箱,直接【ssh-keygen -t】生成秘钥
 
输入命令后第一步提示生成ssh key生成的位置,默认是~/.ssh/id_rsa
然后提示输入密码,如果直接回车则没有密码,下次本地提交git时也不需要输入密码了
 
生成文件的结果如下(~/.ssh/目录下内容):
id_rsa
id_rsa.pub
known_hosts
 
说明:
id_rsa:私钥
id_rsa.pub:公钥
known_hosts:访问过的机器的公钥,第一次ssh 其他机器时如果有权限访问,会提示是否保存信息,下次会校验访问该机器的公钥与known_hosts中的是否一致,如果不一致则不能登录过去。解决方案是删除known_hosts中该条机器的记录
 

第二步:gitlab中配置机器的ssh公钥

登录gitlab
Profile settings->SSH Keys->Add  SSH Key
然后添加本地的~/.ssh/id_rsa.pub的内容即可
 
 
至此,就实现了git免登陆

如果是要ssh免登陆某台机器

例如A要免登陆B机器
在B机器的~/.ssh/目录下新建一个文件authorized_keys,然后将A机器的ssh 公钥放进去即可

其他说明:ssh config与git的config

ssh config
git在本地提交到gitlab上时,会读取ssh的公钥秘钥信息。
如果在~/.ssh/目录下有config则会优先读取config的配置信息,否则直接读取id_rsa和id_rsa.pub
 
配置config文件(~/.ssh/config):
Host xxx(ssh别名)
HostName gitlab.xxx.com/IP(要连接的gitlab地址或主机名)
User xxx@xxx.com(账号,要与git config的email对应)
IdentityFile "~/.ssh/id_rsa_xxx(要使用的ssh私钥)"
 
通过config文件可以管理多个ssh会话。通过Host别名也可以直接【ssh 别名】登录到其他机器上

注意一点:

1.配置了User,git push时就一定要配置相同的email
如果不设置User,随意一个user.email都可以提交git push
如果设置了User,user.email必须匹配到config中的User才能提交【git config user.email=xxxx@xxx.com】
 
如果不想写死git config的user.email,可以不配置config的User,去掉这项就可以
 
2.config文件权限要设置成600,否则提示Bad owner or permissions on /home/work/.ssh/config
 
git config
git push时需要配置user的email和name,除了上面说的配置了~/.ssh/config的User的情况。
email和name可以随便填写,不存在的gitlab账号也可以提交成功,只要你把ssh的公钥加到gitlab里即可。
只是如果email不存在,则gitlab上提交记录上用户头像不能点击;如果真实存在的gitlab账号,点击进入该用户的个人主页
 
git config user.email “xxx@xxx.com"
git config user.name “xxx@xxx.com"
 
 
posted on 2017-04-27 19:23  每天1990  阅读(3273)  评论(0编辑  收藏  举报