1. 如何生成ssh公钥(摘录自git.oschina.net)
你可以按如下命令来生成 sshkey:
# xxxxx@xxxxx.com是邮箱号
ssh-keygen -t rsa -C "xxxxx@xxxxx.com"
# Generating public/private rsa key pair...
# 三次回车即可生成 ssh key
查看你的 public key,并把他添加到码云(Gitee.com) SSH key添加地址
cat ~/.ssh/id_rsa.pub
# ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC6eNtGpNGwstc....
添加后,在终端(Terminal)中输入
ssh -T git@git.oschina.net
若返回
Welcome to Git@OSC, yourname!
则证明添加成功。
2. 配置多账号以及多地址
举个例子,我又在git.oschina.net上面新建了一个账号yyyyy@yyyyy.com,然后还在github.com上面新建了一个zzzzz@zzzzz.com账号
2.1 按照第一步生成private和public key
同样把public key上传到git.oschina.net或者github.com的对应位置,如下
~/.ssh/id_rsa_yyyyy
~/.ssh/id_rsa_yyyyy.pub
~/.ssh/id_rsa_zzzzz
~/.ssh/id_rsa_zzzzz.pub
2.2 配置~/.ssh/config文件
#xxxxx
Host git.oschina.net
HostName git.oschina.net
User xxxxx
IdentityFile /home/user/.ssh/id_rsa
#yyyyy
Host git.oschina.net-yyyyy #这里不同
HostName git.oschina.net #这里一样
User yyyyy
IdentityFile /home/user/.ssh/id_rsa_yyyyy #这里不同
#zzzzz
Host github.com #这里不同
HostName github.com #这里一样
User zzz
IdentityFile /home/user/.ssh/id_rsa_zzzzz #这里不同
验证配置是否生效
ssh -T git@git.oschina.net
ssh -T git@git.oschina.net-yyyyy
ssh -T git@github.com
注意:ssh -T git@github.com 如果提示Hi zzzzz! You've successfully authenticated, but GitHub does not provide shell access.说明已经成功
3. 多账号之间切换
git config --global user.name "xxxxx"
git config --global user.email "xxxxx@xxxxx.com"
或者
git config --global user.name "yyyyy"
git config --global user.email "yyyyy@yyyyy.com"
或者
git config --global user.name "zzzzz"
git config --global user.email "zzzzz@zzzzz.com"
访问远程库的不同
通过xxxxx@xxxxx.com访问远程项目
git clone git@git.oschina.net:xxxxx/demo.git
通过yyyyy@yyyyy.com访问远程项目
git clone git@git.oschina.net-yyyyy:yyyyy/demo.git
通过zzzzz@zzzzz.com访问远程项目
git clone git@github.com:zzzzz/demo.git
4. 避免每次为SSH-KEY输入密码
4.1 以下的生命周期为某个Console
#会重新开启一个ssh-agent进程
eval `ssh-agent -s`
ssh-add /home/user/.ssh/id_rsa
ssh-add /home/user/.ssh/id_rsa_yyyyy
ssh-add /home/user/.ssh/id_rsa_zzzzz
以后以下操作就不用输入密码了
ssh -T git@git.oschina.net
ssh -T git@git.oschina.net-yyyyy
ssh -T git@github.com
4.2 使用keychain,重启后失效,ssh-agent进程重启了
sudo apt-get install keychain
#添加以下到${HOME}/.bashrc 或者 /etc/bash.bashrc
keychain /home/user/.ssh/id_rsa /home/user/.ssh/id_rsa_yyyyy /home/user/.ssh/id_rsa_zzzzz
. ~/.keychain/`uname -n`-sh
注意把#开头的注释都删除哈!