huixisheng / huixisheng.github.com

前端开发者说,记录前端的故事
http://huixisheng.github.io/
12 stars 3 forks source link

git配置多个ssh-key #9

Closed huixisheng closed 7 years ago

huixisheng commented 8 years ago

git配置多个ssh-key

生成key

ssh-keygen -t rsa -f ~/.ssh/git.oschina.net -C "469184346@qq.com"

代码参数含义: -t 指定密钥类型,默认是 rsa ,可以省略。 -C 设置注释文字,比如邮箱。 -f 指定密钥文件存储文件名。 -来自github设置添加SSH

直接输入回车

Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:

如果输入了密码

设置passphrase后,进行版本控制时,每次与GitHub通信都会要求输入passphrase,以避免某些“失误”

将SSH 私钥增加到ssh-agent: ssh-add ~/.ssh/xyz_rsa, 这里会提示输入一次私钥的密码; -来自

添加密匙

拷贝公钥

pbcopy <  ~/.ssh/git.oschina.net.pub

其他平台拷贝命令参考如何生成SSH key

window clip < ~/.ssh/id_rsa.pub

linux sudo apt-get install xclip xclip -sel clip < ~/.ssh/id_rsa.pub

登录远程git平台添加ssh key

粘贴刚才拷贝的内容

将新生成的key添加到ssh-agent中

$ eval "$(ssh-agent -s)"
$ ssh-add ~/.ssh/git.oschina.net

可以通过 ssh-add -l 来确私钥列表 $ ssh-add -l 可以通过 ssh-add -D 来清空私钥列表 $ ssh-add -D

配置config用于多个git ssh密匙

Host github.com
    HostName github.com
    PreferredAuthentications publickey
    IdentityFile ~/.ssh/github
    User huixisheng

Host git.coding.net
    HostName git.coding.net
    PreferredAuthentications publickey
    IdentityFile ~/.ssh/gitcodingnet
    User git

Host git.oschina.net
    HostName git.oschina.net
    PreferredAuthentications publickey
    IdentityFile ~/.ssh/git.oschina.net
    User git

Host,SSH 连接名 HostName,如上所示,可以是通配符,可以是 IP,也可以是域名等 User,登录的用户名 IdentifyFile,version 1 协议下默认是 ~/.ssh/identify,version 2 协议下,默认是依次匹配:~/.ssh/id_dsa,~/.ssh/id_ecdsa,~/.ssh/id_rsa,还有 version 2 兼容模式。 LocalForward 端口的内部跳转 Port,端口设置,默认 SSH 的端口是 22 Protocal,协议版本号,1 或者 2 来自

测试是否配置成功

$ ssh -T git@git.oschina.net
Welcome to Git@OSC, huixisheng!

-v会输出详情的信息 多SSH Key管理技巧与Git多账户登录问题

其他问题

$ ssh -T git@git.oschina.net
The authenticity of host 'git.oschina.net (218.60.114.30)' can't be established.
ECDSA key fingerprint is SHA256:FQGC9Kn/eye1W8icdBgrQp+KkGYoFgbVr17bmjey0Wc.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'git.oschina.net,218.60.114.30' (ECDSA) to the list of known hosts.
Permission denied (publickey).

$ eval "$(ssh-agent -s)"
$ ssh-add ~/.ssh/git.oschina.net

如果执行ssh-add时提示"Could not open a connection to your authentication agent",可以现执行命令: $ ssh-agent bash 来自

sudo git clone git@git.coding.net:huixisheng/layout.git
Cloning into 'layout'...
Permission denied (publickey).
fatal: Could not read from remote repository.

ssh -vT git@git.coding.net 是有结果返回的,看了debug信息都是正常的。

执行如下(期间关闭了翻墙软件)

ssh-add ~/.ssh/gitcodingnet
source ~/.ssh/config

再次clone又可以了。没找到为何不行的根本原因

参考

huixisheng commented 8 years ago

https://github.com/huixisheng/huixisheng.github.com/issues/6

huixisheng commented 7 years ago

整理到博客中