Go学习
SSH CA证书验证登录
CA: Certificate authority, 其实就是一对密钥
准备工作
安装 ssh :
1
apt update && apt install -y ssh
进入工作目录: /etc/ssh/
,并依次执行以下内容(登录用户为 root):
CA证书准备
服务端CA
1
ssh-keygen -t ed25519 -C host_ca
执行后,会在/etc/ssh/
下生成两个文件:host_ca
和host_ca.pub
客户端CA
1
ssh-keygen -t ed25519 -C user_ca
执行后,会在/etc/ssh
下次两个文件:user_ca
和user_ca.pub
在服务器配置客户端证书
在/etc/ssh/sshd_config
中添加以下内容:
TrustedUserCAKeys /etc/ssh/user_ca.pub
证书签发
为服务器签发
1
ssh-keygen -s host_ca -I *.example.com -h ssh_host_ed25519_key.pub
-I
:身份字符串,随意填写-h
: 指定为服务器证书
ssh_host_ed25519_key.pub
是在安装 ssh 服务后自动生成的证书,若没有,则请自行手动创建
执行后,会在/etc/ssh/
下生成证书ssh_host_ed25519_key-cert.pub
配置证书
在/etc/ssh/sshd_config
中添加以下内容:
HostCertificate /etc/ssh/ssh_host_ed25519_key-cert.pub
配置完成后,重启 ssh 服务:
1
service ssh restart
或
1
systemctl restart ssh
为客户端签发
客户端密钥生成
1
ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519
执行后,提示输入密钥密码,按需输入,不输入默认没有密码,最后会在~/.ssh/
下生成两个文件id_ed25519
和id_ed25519.pub
id_ed25519
为ssh默认的ed25519
加密类型密钥的文件名,在进行ssh连接时默认会优先使用进行验证
签发密钥
1
ssh-keygen -s user_ca -I user -n root -V +52w ~/.ssh/id_ed25519.pub
执行后,将在~/.ssh/
下生成id_ed25519-cert.pub
证书
配置证书
将~/.ssh/id_ed25519
,~/.ssh/id_ed25519-cert.pub
和/etc/ssh/host_ca.pub
一并拷贝到客户端主机目录~/.ssh
下
(可选, 如果证书文件命名使用的是默认可被识别的话,则不需要)然后在客户端主机~/.ssh/known_hosts
(如果没有,则自行创建)中添加以下内容:
@cert-authority *.exampl.com {host_ca.pub文件内容}
参考链接
本文由作者按照 CC BY 4.0 进行授权