git多站点多用户SSH配置

目录
[隐藏]


git默认情况下会在~/.ssh/id_rsa获取认证信息,但是如果有多个账户在github或者多个不同的站点同步的话,就需要配置了,虽然有不少站点支持上传id_rsa.pub公钥但是个人还是推荐不同的站点使用不同密钥对,这样有利于养成良好的安全习惯。首先是生成新的密钥对,下面详细说一下Windows平台上Cygwin上面的情况,这个平台最近越发喜欢用,因为最近更新比较频繁,与新的Win8系统兼容基本没有问题。而我需要用的Ruby和Perl现在都不单独下载了(或者即使下载了,但是不会加到Path里面需要用的使用在命令行上面手动SET PATH=ruby;%PATH%这样),因为Cygwin集成的环境很不错很多Ruby程序都是直接运行的。好了下面说多站点账户git的ssh配置方法:

1.生成密钥

生成密钥需要使用ssh-keygen命令,此命令会提示保存目录

ssh-keygen -t rsa -C 'rexdf@vip.qq.com'

ssh-keygen

ssh-keygen


成功后可以执行下面这句(实际上可以不用),使ssh识别

ssh-add ~/.ssh/id_rsa_zend

2.上传密钥

到你的网站设置你的id_rsa_zend.pub,在github上面则是复制其中的文本内容,有的网站则是上传此文件.

3.配置config

在~/.ssh/下面编辑config文件如果没有

# Default github user(first@mail.com)
Host github.com
HostName github.com
User git
IdentityFile ~/.ssh/id_rsa

# second user(second@mail.com)
Host mysite
HostName git.mysite.com
User git_mysite
IdentityFile ~/.ssh/id_rsa_second
config文件

config文件

4.修改URL

git clone ssh://[用户名@]URL
这里需要把URL的主机部分替换成mysite这样就可以自动使用新的密钥了。

git clone ssh://git_mysite@mysite/repo/app.git

5.问题解决

这里会涉及到Cygwin在Win上面第一个bug,不过Linux下面按照上面是没有问题的。正常情况应该会出现下面的画面

Bad owner or permissions on /home/rexdf/.ssh/config
fatal: The remote end hung up unexpectedly

config权限

config权限


以及

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0660 for '/home/rexdf/.ssh/id_rsa' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
bad permissions: ignore key: /home/rexdf/.ssh/id_rsa
Permission denied (publickey,gssapi-keyex,gssapi-with-mic).
fatal: The remote end hung up unexpectedly

Permissions 0660 for '/home/rexdf/.ssh/id_rsa' are too open.

Permissions 0660 for ‘/home/rexdf/.ssh/id_rsa’ are too open.


而且即使你进入.ssh 执行

chmod 600 id_rsa id_rsa_zend config

却问题依然,执行ls -l结果如下

$ ls -l
total 12
-rw-rw---- 1 rexdf None  538 Oct  7 11:34 config
-rw-rw---- 1 rexdf None 1679 Oct  6 13:43 id_rsa
-rw-rw-r-- 1 rexdf None  394 Oct  6 13:43 id_rsa.pub
-rw-rw---- 1 rexdf None 1675 Oct  7 11:24 id_rsa_zend
-rw-rw-r-- 1 rexdf None  398 Oct  7 11:24 id_rsa_zend.pub
-rw-rw-r-- 1 rexdf None  420 Oct  6 13:44 known_hosts

可以看到id_rsa id_rsa_zend config三个文件权限都是660而不是600(需要提醒下,如果文件系统是FAT32,则不需要往下看了,NTFS才支持权限)。是Cygwin的bug吗?是的。是chmod命令根本没用吗?不完全是。实际上你可以执行chmod 1 config看看,可以正确执行的。问题在于上面显示的那个None,这个是Linux的用户组,对应的是组权限而在Cygwin对于None的组是没法赋予权限的,于是组权限就等于拥有者的权限了。解决办法是随便赋予一个组然后再chmod就OK了。

chgrp Users id_rsa_zend id_rsa config
chmod 600 id_rsa_zend id_rsa config
权限修改

权限修改

git成功

git成功

本文链接:git多站点多用户SSH配置

转载声明:本站文章若无特别说明,皆为原创,转载请注明来源:Rexdf,谢谢!^^


此条目发表在编程日志分类目录,贴了, 标签。将固定链接加入收藏夹。

One Response to git多站点多用户SSH配置

  1. tomsu说:
    Google Chrome 36.0.1985.143 Windows 8 x64 Edition
    Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.143 Safari/537.36

    nice

    Win8上遇到同样的问题,解决了!

发表回复

您的电子邮箱地址不会被公开。

*

:zsmilebig: :zsadbig: :zwiredbig: :zgreenhappy: more »

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据