创建密钥
1.创建一个密钥
$ ssh-keygen -t rsa
2.输入保存ssh key 密钥的文件名称 id_rsa_github 。
Enter file in which to save the key (/root/.ssh/id_rsa):/root/.ssh/id_rsa_aaa
3.输入两次密码,要求最低不能低于8位。
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
重复上面的步骤可以创建多个密钥,比如你有多个git账户
id_rsa_github
id_rsa_bitbucket
id_rsa_oschina
添加到 ssh-agent
用ssh-add命令把创建的密钥添加到 ssh-agent 里
$ ssh-add ~/.ssh/id_rsa_github
$ ssh-add ~/.ssh/id_rsa_bitbucket
$ ssh-add ~/.ssh/id_rsa_oschina
可以用ssh-add -l来查看一下添加效果,一般会出现下面的提示信息
2048 SHA256:ueU7NSaLTzfKNMKL3EVkBKqK2/bvr/ewdNVTmBYZtxg /Users/YourName/.ssh/id_rsa_github (RSA)
2048 SHA256:xGAMHLe5Un5LLWiXp6GI84CVn23sD9g+EQBjXMQP34YA /Users/YourName/.ssh/id_rsa_bitbucket (RSA)
2048 SHA256:lJfTU9j6JfkMSM4vJpk5BdsARzkRA/d05aUnc2BdBeg /Users/YourName/.ssh/id_rsa_oschina
这就证明你之前添加都已经生效了。
当然如果这里出现什么问题,你也可以用 ssh-add -d 来删除某个id_rsa
保存公钥到 git 服务
打开对应的git服务网站管理页面把对应的公钥提交保存到代码管理服务器(.pub 结尾)
添加 ssh 配置文件
在 ~/.ssh 目录创建 config 配置文件
nano ~/.ssh/config
添加配置信息
Host github.com
HostName github.com
User git
IdentityFile /Users/YourName/.ssh/id_rsa_github
Host bitbucket.org
HostName bitbucket.org
User git
IdentityFile /Users/YourName/.ssh/id_rsa_bitbucket
Host oschina.net
HostName oschina.net
User git
IdentityFile /Users/YourName/.ssh/id_rsa_oschina
好了,这样就可以任意穿梭于多个git服务器而不用担心ssh key的问题了。
一、生成ssh key
1.1 生成密钥(必须)
ssh-keygen -t rsa -C "youremail@yourcompany.com"
注解:
密钥类型
可以用-t 选项
指定。如果没有指定则默认生成用于SSH-2
的RSA密钥。这里使用的是rsa
。- 同时在密钥中有一个
注释字段
,用-C
来指定所指定的注释,可以方便用户标识这个密钥,指出密钥的用途或其他有用的信息。所以在这里输入自己的邮箱或者其他都行
。 - 若一路回车(密码可以不写),这样只会在
~/.ssh/ 目录
下生成id_rsa 和 id_rsa.pub 两个文件
。
1.2 设置路径 (可选)
为了区分,我们在第一个回车后设置路径,进行第二步
id_rsa_bitbucket
id_rsa_bitbucket.pub
id_rsa_github
id_rsa_github.pub
1.3 指定密语字符串(可选)
- 输入完毕后程序同时要求输入
一个密语字符串(passphrase)
,空表示没有密语。接着会让输入2次口令(password)
,空表示没有口令。3次回车即可完成当前步骤,此时~/.ssh
目录下文件已经生成好了。 - 建议输一个,安全一点,当然不输也行,应该不会有人闲的无聊冒充你去修改你的代码
完了之后,大概是这样:
到此为止,你本地的密钥对就生成了。
二、设置ssh key的代理
2.1、 首先查看代理
ssh-add -l
若提示
Could not open a connection to your authentication agent.
则系统代理里没有任何key,执行如下操作
ssh-agent bash
若系统已经有ssh-key 代理 ,可以删除
ssh-add -D
2.2、 添加私钥
ssh-add ~/.ssh/id_rsa_bitbucket
ssh-add ~/.ssh/id_rsa_github
三、添加公钥
在对应的github的ssh管理页面,添加对应的公钥(.pub 文件内容),保存到代码管理服务器。
四、添加和编辑配置文件config
在 ~/.ssh 目录
下新建一个config文件
touch ~/.ssh/config
添加内容
# git@bitbucket.org
Host bitbucket.org
HostName bitbucket.org
PreferredAuthentications publickey
IdentityFile ~/.ssh/github/id_rsa_bitbucket
# git@github.com
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa_github
当然也可以利用nano命令来创建和编辑
nano ~/.ssh/config
如此,ssh就会根据登陆的不同域,来读取对应的私钥文件
五、测试
ssh -T HostName
ssh -T git@github.com
若出现
Hi XXX! You've successfully authenticated, but GitHub does not provide shell access.
则表示成功。
若出现
permission denied (publickey)
请检查github的ssh管理里添加的公钥是否正确。
六 为不同项目设置不同的git账号
设置了全局的git用户,所有的git项目都会使用这个用户名和邮箱,如下设置的:
git config --global user.name 'Username'
git config --global user.email 'UserEmail'
如果你在另一个项目中想使用另一个git账号,就要为当前项目设置指定的账号和邮箱,在当前项目中设置如下命令:
git config user.name 'AnotherName'
git config user.email 'AnotherEmail'
使用git config --list
就可以看到全局的git配置和当前项目的git配置了