ssh-keygen 使用
生成、管理和转换认证密钥
1 | $ ssh-keygen --help |
-t
指定要创建的密钥类型,如:-t dsa | ecdsa | ed25519 | rsa | rsa1
1 | $ ssh-keygen -t ecdsa |
-b
bits 指定密钥长度。对于RSA密钥,最小要求768位,默认是2048位
1 | $ ssh-keygen -b 4096 |
-C
comment 提供一个注释。生成git
密钥的时候都会要求注释中写入邮箱名字。
1 | $ ssh-keygen -t rsa -b 4096 -C "your_email@example.com" |
-f
filename 指定密钥文件名
-l
显示公钥文件的指纹数据。它也支持 RSA1 的私钥。对于RSA和DSA密钥,将会寻找对应的公钥文件,然后显示其指纹数据。
1 | $ ssh-keygen -lf id_rsa.pub |
-E
用md5的方式查看指纹数据
1 | $ ssh-keygen -E md5 -lf id_rsa.pub |
ssh密钥常见问题
Permissions 0644 for ‘/root/.ssh/id_rsa’ are too open
1 | [root@linux1 workspace]# git clone git@github.com:myoss/profile.git |
出现以上的错误,需要将私钥的权限降级到0600
1 | [root@linux1 workspace]# chmod 0600 ~/.ssh/id_rsa |
多个公钥与服务器上不同的GIT帐号交互
国外很有名的:github.com
,国内:git.oschina.net
等等,我们可能会在上面注册多个账户,但是如何使用不同的公钥了?
生成不同账户的密钥
假设我现在有2个Github
账户,账户名分别是:jerry1
和jerry2
,我先在本地生成两个密钥,然后将密钥的公钥分别添加到Github
账户中
1 | $ ssh-keygen -t rsa -b 4096 -C "jerry1@myoss.com" |
添加公钥到服务器的账户中
将刚才生成的两个公钥,分别添加到github.com
中(其它的网站也类似)
1 | $ cat jerry1_rsa.pub #复制下面输出的内容,添加到github账户中 |
配置ssh的config文件
在用户家目录的.ssh
中,创建或者编辑文件config
1 | $ cat ~/.ssh/config |
测试是否能连接git服务器
不输出错误信息,即连接成功。如果不是github
账户,输出的信息和下面会不同
1 | $ ssh -T jerry1-github |
git服务器的仓库地址
github
中默认ssh方式的项目地址类似如下
1 | git@github.com:github的用户名/github的项目名字.git |
这是时候克隆的ssh地址需要稍作改变
1 | config文件中配置的Host名字:github的用户名/github的项目名字.git |
如果你的项目已经克隆到本地磁盘了,那么就修改下远程仓库的地址
1 | git remote set-url <仓库的简写名字> <新的仓库地址> |