标题:
功能介绍
通过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_192.pub 192.168:/tmp
// 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:登录的用户名,认证一般是gitPubkeyAuthentication:是否允许客户端通过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参数用于测试连接,并不真正登录;
