您的位置:首页 > 其它

如何通过ssh与Git远程仓库建立加密连接

2015-03-01 11:44 447 查看
以Git@OSC为例

SSH key 可以让你在你的电脑和 Git @ OSC 之间建立安全的加密连接。但权限很重要,key这东西对权限有很严格的限制。登录端的 .ssh目录权限是ssh-keygen自己生成的不要乱改。默认.ssh目录是700 , id_rsa 是600,不能多也不能少,如果有写的权限会导致 ssh认为这个文件不可靠,可能被改写。被登录的机器 .ssh 目录是 700 至少不能有写的权限,id_rsa.pub的权限是644。

你可以按如下命令来生成sshkey:

$ ssh-keygen -t rsa -C "xxxxx@xxxxx.com" # Creates a new ssh key using the provided email
$ Generating public/private rsa key pair.
$ Enter file in which to save the key (/root/.ssh/id_rsa):  直接回车,此处如果想重命名可输入新的命名
$ Enter passphrase (empty for no passphrase):               直接回车
$ Enter same passphrase again:
$ Your identification has been saved in /root/.ssh/id_rsa.  公钥
$ Your public key has been saved in /root/.ssh/id_rsa.pub.  私钥


查看你的public key,并把他添加到远程服务器上。

$ cat ~/.ssh/id_rsa.pub
# ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC6eNtGpNGwstc....


添加后,在终端(Terminal)中输入

$ ssh -T git@git.oschina.net


若返回

$ Welcome to Git@OSC, yourname!


则证明添加成功。若为 github,返回

Hi yourname! You've successfully authenticated, but GitHub does not provide shell access.


生成 ssh key 的邮箱必须是该 Git 仓库登陆的邮箱,若多个 Git 仓库使用不同邮箱注册,则需要生成多对 ssh key,并分别命名。注意,此处与服务器无关,只跟邮箱有关。即,如果你 github 跟 OSChina 的账号均为同一个邮箱,就无需配置两对不同的 ssh key。但如果你有两个不同邮箱注册的 github账号,则需要对应生成不同的两对 ssh key。为了使不同的 ssh key 对应上不同的 Git 仓库,我们需要在.ssh/目录下新建config文件。

# github
Host anything.github.com  // 主机名字,不能重名
HostName github.com       // 主机所在域名或IP
Port 22                   // 端口,可不写
User MissYasiky           // 用户名称
IdentityFile ~/.ssh/id_rsa_home  // 私钥路径


Host 中的 anything 是一个别名,可随意命名。注意,进行远程连接时,必须把 github.com 替换成 anything.github.com。譬如,

$ git clone git@anything.github.com:username/repo.git


或者

$ git remote add origin git@anything.github.com:username/repo.git


同一个服务器下多个注册账号的 config 文件该如何写此处就不举例了。

配置完 config 文件,还有一个地方需要注意,就是 .gitconfig 文件。

此时将不能在多个仓库下通用 global 级别的 .gitconfig 了。如果 .gitconfig 下的邮箱与 Git 仓库的注册邮箱不符,可能会导致无法获得仓库的写入权限,或者显示为未授权的开发者邮箱。需要考虑使用 repo 下的 .gitconfig 文件分别配置。

通过SSH与git@github.com建立加密连接的官方文档:

https://help.github.com/articles/generating-ssh-keys/

参考文章列表:

ssh key 免密码登录

帮助·oschina
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  git