Linux密钥登陆

2021-08-29  本文已影响0人  几簟生凉

首先明确一点,一对密钥分为私钥和公钥,私钥是你自己留着的,公钥是放在远程主机的。密钥对通过ssh-keygen创建的,在哪台主机创建的无所谓,你可以将公钥放到任意你想登陆的服务器上,也可以把私钥放到任意需要登陆的客户机上。

所谓"公钥登录",原理很简单,就是用户将自己的公钥储存在远程主机上。登录的时候,远程主机会向用户发送一段随机字符串,用户用自己的私钥加密后,再发回来。远程主机用事先储存的公钥进行解密,如果成功,就证明用户是可信的,直接允许登录shell,不再要求密码。
阮一峰的网络日志,SSH原理与运用(一):远程登录

现在使用ssh-keygen生成一对密钥

ssh-keygen -C '注释'

# 得到的私钥格式如下
-----BEGIN OPENSSH PRIVATE KEY-----
b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAABlwAAAAdzc2gtcn
此处略去很多行
e3xx+VmdxnJvEAAAAbcm9vdEB2bS0yMWItMHF1MWsubm92YWxvY2Fs
-----END OPENSSH PRIVATE KEY-----

# 得到的公钥格式如下
ssh-rsa AAAAB3NzaC1 此处略去很多字 l2cdGl5iArE= '注释'

使用ssh-copy-id将公钥发送到指定的主机上

ssh-copy-id [-i '公钥文件'] user@host

在目标主机的~/.ssh/authorized_keys中会添加刚刚发送来的公钥。

这样就可以实现免密登陆了。

ssh-agent

Linux 使用ssh-agent来管理密钥,使用ssh-keygen生成之后会自动添加到ssh-agent,也可以通过ssh-add 私钥来添加,通过以下命令操作

# 查看所有公钥
ssh-add -L
# 查看所有密钥
ssh-add -l

# 删除指定的密钥, 删除时如果私钥文件还存在,会拒绝删除,可以用rm先将密钥文件删除。
ssh-add -d
# 删除所有密钥
ssh-add -D

-----BEGIN OPENSSH [PRIVATE, RSA]KEY-----

有些程序点名需要-----BEGIN OPENSSH RSA KEY-----

现在使用命令 ssh-keygen -t rsa 生成ssh,默认是以新的格式生成,id_rsa的第一行变成了“BEGIN OPENSSH PRIVATE KEY” 而不在是“BEGIN RSA PRIVATE KEY”
lsp84ch80@CSDN

可以使用以下命令生成

ssh-keygen -m PEM -t rsa -b 4096 

重启

## ubuntu
service sshd restart
## centos
systemctl restart sshd.service

参考

上一篇 下一篇

猜你喜欢

热点阅读