You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何创建指定算法与加密套件的SSH密钥及校验已有密钥?

创建指定加密套件的SSH密钥及检查方法

一、创建SSH密钥并配置使用指定加密套件

先明确:你提到的密钥交换、对称加密、MAC算法是SSH会话连接时协商的加密参数,和SSH身份验证密钥(如RSA、ED25519)是两个层面的东西——密钥本身负责身份验证,这些套件负责加密连接过程中的数据。

1. 生成基础SSH密钥

先生成一个标准的身份验证密钥,推荐用更安全的ED25519,或者高位数的RSA:

  • 生成ED25519密钥:
    ssh-keygen -t ed25519 -C "your-email@example.com"
    
  • 生成4096位RSA密钥:
    ssh-keygen -t rsa -b 4096 -C "your-email@example.com"
    

按照提示设置密钥保存路径和密码即可(密码可选,但建议设置)。

2. 强制SSH使用指定加密套件

要让SSH连接时用你指定的算法,需要修改客户端或服务器的SSH配置:

客户端配置(仅影响你的本地连接)

创建或编辑~/.ssh/config文件,添加目标主机的配置:

Host your-server
  HostName 192.168.1.100  # 替换成服务器IP或域名
  User your-username      # 替换成你的服务器用户名
  # 指定密钥交换算法
  KexAlgorithms diffie-hellman-group-exchange-sha256
  # 指定对称加密算法,按优先级排序(前面的优先协商)
  Ciphers aes256-ctr,aes192-ctr,aes128-ctr
  # 指定MAC算法,按优先级排序
  MACs hmac-sha2-512,hmac-sha2-256

保存后,用ssh your-server连接时,就会强制使用这些算法协商会话。

服务器配置(影响所有连接到该服务器的客户端)

编辑服务器上的/etc/ssh/sshd_config文件,找到对应参数并修改:

# 密钥交换算法
KexAlgorithms diffie-hellman-group-exchange-sha256
# 对称加密算法
Ciphers aes256-ctr,aes192-ctr,aes128-ctr
# MAC算法
MACs hmac-sha2-512,hmac-sha2-256

修改后重启SSH服务生效:

# Debian/Ubuntu 系统
sudo systemctl restart sshd

# RHEL/CentOS 系统
sudo systemctl restart sshd

# macOS 系统
sudo launchctl stop com.openssh.sshd && sudo launchctl start com.openssh.sshd

二、检查已有密钥及加密套件使用情况

1. 检查SSH密钥本身的算法

查看本地公私钥的算法类型:

  • 查看公钥算法:
    ssh-keygen -l -f ~/.ssh/id_ed25519.pub  # 替换成你的公钥路径
    
    输出示例:256 SHA256:xxxxxxx your-email@example.com (ED25519),括号里就是密钥算法。
  • 查看私钥算法:
    ssh-keygen -y -f ~/.ssh/id_ed25519  # 替换成你的私钥路径
    
    输出开头的ssh-ed25519或ssh-rsa就是对应的算法类型。

2. 检查SSH连接实际使用的加密套件

连接服务器时加-v参数,就能看到协商的会话算法细节:

ssh -v your-server

在输出里找这些关键字段:

  • debug1: kex: algorithm: diffie-hellman-group-exchange-sha256(密钥交换算法)
  • debug1: kex: server->client cipher: aes256-ctr MAC: hmac-sha2-512 compression: none(服务器到客户端的加密和MAC)
  • debug1: kex: client->server cipher: aes256-ctr MAC: hmac-sha2-512 compression: none(客户端到服务器的加密和MAC)

如果想直接过滤出这些信息,用这条命令:

ssh -v your-server 2>&1 | grep -E "(kex: algorithm|cipher:|MAC:)"

3. 检查服务器支持的加密套件

用nmap工具可以快速扫描服务器支持的所有算法(无需建立连接):

nmap --script ssh2-enum-algos -p 22 your-server-hostname

输出会列出服务器支持的密钥交换、加密、MAC等所有算法,你可以核对是否包含你指定的那些。

内容的提问来源于stack exchange,提问作者Techiescorner

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 22:57:44