标题:
功能介绍
通过ssh-keygen
命令来生成ssh
公钥密钥,帮助我们可以免密进行ssh
连接别的主机或者进行认证注册操作(比如github
,这样后续一些需要权限的操作,可以不需要密码确认);
应用:单向登录
以免密登录A
服务器为例;
第一步,执行以下命令,生成公密钥文件
1 | ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa_192.168.1.169 |
说明,-t
参数是指定密钥类型,如果没有指定则默认生成用于SSH-2
的RSA
密钥;-P
提供密语(我们希望是免密登录,所以置空);-f
参数指定密钥文件名(建议命名上采用id_rsa_<对方的IP地址或HostName>
);
第二步,配置
如果文件名不是采用默认的id_rsa
,都需要在~/.ssh/config
文件中进行配置;1
2
3
4
5Host 192.168.1.169
HostName 192.168.1.169
User root
PubkeyAuthentication yes
IdentityFile ~/.ssh/id_rsa_192.168.1.169
说明,
Host
:别名,默认是同HostName
一致HostName
:服务器的IP
地址User
:登录的用户名PubkeyAuthentication
:是否允许客户端通过public-key authentication
来登陆IdentityFile
:密钥的路径
第三步,将id_rsa_192.168.1.169.pub
文件中的内容追加到A
服务器上的~/.ssh/authorized_keys
文件中
先scp
到A
服务器的tmp
目录下,再进行追加操作;1
2
3
4
5// 本地服务器上执行 scp
scp ~/.ssh/id_rsa_192192.168 :/tmp .pub
// A 服务器执行追加操作
cat 192.168 :/tmp/id_rsa_192 .pub >> ~/.ssh/authorized_keys
第四步,验证1
ssh root@192.168.1.169
登录成功!
应用:认证
以认证github
为例;
第一步,执行以下命令,生成公密钥文件
1 | ssh-keygen -t rsa -P '' -C "your_email@example.com" -f ~/.ssh/id_rsa_github |
说明,-t
参数是指定密钥类型,如果没有指定则默认生成用于SSH-2
的RSA
密钥;-P
提供密语(我们希望是免密登录,所以置空);-f
参数指定密钥文件名(建议命名上采用id_rsa_<平台名>
);-C
参数
这时候会生成两个文件,id_rsa_github
和id_rsa_github.pub
;
第二步,配置
如果文件名不是采用默认的id_rsa
,都需要在~/.ssh/config
文件中进行配置;1
2
3
4
5Host github.com
HostName github.com
User git
PubkeyAuthentication yes
IdentityFile ~/.ssh/id_rsa_github
说明,
Host
:别名,默认是同HostName
一致HostName
:平台的域名User
:登录的用户名,认证一般是git
PubkeyAuthentication
:是否允许客户端通过public-key authentication
来登陆IdentityFile
:密钥的路径
第三步,将id_rsa_coding.pub
中的文件内容,放到github
平台上的SSH and GPG keys
上
用cat
命令直接输出文件内容,方便复制粘贴1
cat ~/.ssh/id_rsa_github.pub
第四步,验证
1 | ssh -T git@github.com |
说明,-T
参数用于测试连接,并不真正登录;