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

SSH key 就是为了让两个linux机器之间不需要用户名和密码就能建立安全的加密连接的一对rsa或dsa签名的密钥对。SSH key 对权限有着非常严格的限制。登录端的 .ssh目录权限是ssh-keygen自己生成的不要乱改。默认.ssh目录是700 , id_rsa 是600,不能给其他用户写的权限,否则服务器会认为这个文件不可靠,可能被改写而拒绝登录。被登录的机器 .ssh 目录是 700,至少不能有写的权限,id_rsa.pub的权限是644。

你可以按如下命令来生成sshkey,ssh-keygen 命令的参数 -t 表示密钥的类型,如果没有指定则默认生成用于SSH-2的RSA密钥。参数 -C 表示识别这个密钥的注释:

$ 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....

以Git@OSC为例,添加后,在终端(Terminal)中输入一下命令(SSH 默认使用 22 端口,如果端口号非默认,后面加上 -p 端口号 即可。

$ 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.

但如果我们有多个相同平台的账号,譬如 github,则需要生成多对 ssh key,并分别命名,因为 github 不允许多个账号使用相同的 ssh key。

如何使用不同的 ssh key 登录不同的 Git 仓库呢,首先,在终端切换到 .ssh 目录下,生成新的 ssh key:

$ cd ~/.ssh
$ ssh-keygen -t rsa -C "xxxxx@xxxxx.com" # 此处使用新的邮箱
$ Generating public/private rsa key pair.
$ Enter file in which to save the key (/root/.ssh/id_rsa):  此处输入新的命名,譬如 id_rsa_corp
$ Enter passphrase (empty for no passphrase):               直接回车
$ Enter same passphrase again:
$ Your identification has been saved in /root/.ssh/id_rsa_corp.  公钥
$ Your public key has been saved in /root/.ssh/id_rsa_corp.pub.  私钥

接着在.ssh/目录下新建 config 文件。

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

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 文件,还有一个地方需要注意,就是 .gitconfig 文件。此时将不能在多个仓库下通用 global 级别的 .gitconfig 了,需要考虑使用 repo 下的 .git/config 文件进行单独配置。关于 Git 配置的细节,详见 Git 配置

通过SSH与git@github.com建立加密连接的官方文档:
https://help.github.com/articles/generating-ssh-keys/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值