ssh 公密钥设置标准步骤

标题:

功能介绍

通过ssh-keygen命令来生成ssh公钥密钥,帮助我们可以免密进行ssh连接别的主机或者进行认证注册操作(比如github,这样后续一些需要权限的操作,可以不需要密码确认);

应用:单向登录

以免密登录A服务器为例;

第一步,执行以下命令,生成公密钥文件

1
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa_192.168.1.169

说明,-t参数是指定密钥类型,如果没有指定则默认生成用于SSH-2RSA密钥;-P提供密语(我们希望是免密登录,所以置空);-f参数指定密钥文件名(建议命名上采用id_rsa_<对方的IP地址或HostName>);

第二步,配置
如果文件名不是采用默认的id_rsa,都需要在~/.ssh/config文件中进行配置;

1
2
3
4
5
Host 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文件中

scpA服务器的tmp目录下,再进行追加操作;

1
2
3
4
5
// 本地服务器上执行 scp
scp ~/.ssh/id_rsa_192.168.1.169.pub 192.168.1.169:/tmp

// A 服务器执行追加操作
cat 192.168.1.169:/tmp/id_rsa_192.168.1.169.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-2RSA密钥;-P提供密语(我们希望是免密登录,所以置空);-f参数指定密钥文件名(建议命名上采用id_rsa_<平台名>);-C参数

这时候会生成两个文件,id_rsa_githubid_rsa_github.pub

第二步,配置
如果文件名不是采用默认的id_rsa,都需要在~/.ssh/config文件中进行配置;

1
2
3
4
5
Host 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参数用于测试连接,并不真正登录;

验证成功