如何创建指定算法与加密套件的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
相关产品推荐
相关产品推荐

