SSH协议栈
概述
openSSH组件是以C语言的openSSL的libcrypto为基础,实现的安全外壳协议(Secure Shell)组件。主要功能为远程登录系统,保证非安全网络环境中信息加密完整可靠。openEuler提供的SSH的服务端和客户端配置项中涉及密钥交换、公钥认证、对称加密和完整性认证的配置参数取值可以选择为商密算法套件(包含SM2/3/4算法)。
前置条件
openssh大于等于8.8p1-5版本:
$ rpm -qa | grep openssh
openssh-8.8p1-5.oe2209.x86_64
openssh-server-8.8p1-5.oe2209.x86_64
openssh-clients-8.8p1-5.oe2209.x86_64
如何使用
场景1:用户远程登录
- 客户端调用ssh-keygen生成用户密钥,默认保存为“~/.ssh/id_sm2”和“~/.ssh/id_sm2.pub”,将“~/.ssh/id_sm2.pub”发送给服务端(也可使用ssh-copy-id命令发送):
$ ssh-keygen -t sm2 -m PEM
- 服务端调用ssh-keygen生成主机密钥,并将客户端发送的公钥加入授权密钥文件列表(如使用ssh-copy-id命令传输,则会自动写入):
$ ssh-keygen -t sm2 -m PEM -f /etc/ssh/ssh_host_sm2_key
$ cat /path/to/id_sm2.pub >> ~/.ssh/authorized_keys
- 修改配置文件,配置支持商密算法登录。服务端的配置文件路径为/etc/ssh/sshd_config,客户端配置文件路径为/etc/ssh/ssh_config。可配置的商密参数如下表:
配置项含义 | 配置项参数 | 配置项参数的商密取值 |
---|---|---|
HostKey | 主机密钥公钥认证密钥 | /etc/ssh/ssh_host_sm2_key |
HostKeyAlgorithms | 主机密钥公钥认证算法 | sm2 |
KexAlgorithms | 密钥交换算法 | sm2-sm3 |
Ciphers | 对称加密算法 | sm4-ctr |
MACs | 完整性校验算法 | hmac-sm3 |
PubkeyAcceptedKeyTypes | 用户公钥认证算法 | sm2 |
IdentityFile | 用户公钥认证密钥 | ~/.ssh/id_sm2 |
FingerprintHash | 打印密钥指纹使用的哈希算法 | sm3 |
- 客户端配置商密算法完成登录。客户端可以使用命令行方式或者修改配置文件(默认配置文件路径为/etc/ssh/ssh_config)的方式使能商密算法套件。使用命令行登录方式如下:
ssh -o PreferredAuthentications=publickey -o HostKeyAlgorithms=sm2 -o PubkeyAcceptedKeyTypes=sm2 -o Ciphers=sm4-ctr -o MACs=hmac-sm3 -o KexAlgorithms=sm2-sm3 -i ~/.ssh/id_sm2 [remote-ip]
文档捉虫