SSH协议栈

概述

openSSH组件是以C语言的openSSL的libcrypto为基础,实现的安全外壳协议(Secure Shell)组件。主要功能为远程登录系统,保证非安全网络环境中信息加密完整可靠。openEuler提供的SSH的服务端和客户端配置项中涉及密钥交换、公钥认证、对称加密和完整性认证的配置参数取值可以选择为商密算法套件(包含SM2/3/4算法)。

前置条件

openssh大于等于8.8p1-5版本:

bash
$ 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:用户远程登录

  1. 客户端调用ssh-keygen生成用户密钥,默认保存为“~/.ssh/id_sm2”和“~/.ssh/id_sm2.pub”,将“~/.ssh/id_sm2.pub”发送给服务端(也可使用ssh-copy-id命令发送):

    bash
    $ ssh-keygen -t sm2 -m PEM
  2. 服务端调用ssh-keygen生成主机密钥,并将客户端发送的公钥加入授权密钥文件列表(如使用ssh-copy-id命令传输,则会自动写入):

    bash
    $ ssh-keygen -t sm2 -m PEM -f /etc/ssh/ssh_host_sm2_key
    $ cat /path/to/id_sm2.pub >> ~/.ssh/authorized_keys
  3. 修改配置文件,配置支持商密算法登录。服务端的配置文件路径为/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
  4. 客户端配置商密算法完成登录。客户端可以使用命令行方式或者修改配置文件(默认配置文件路径为/etc/ssh/ssh_config)的方式使能商密算法套件。使用命令行登录方式如下:

    bash
    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]