You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何在不使用NMAP的情况下从客户端检测SSH主机的可用加密套件及算法并验证配置禁用效果

如何在不使用NMAP的情况下从客户端检测SSH主机的可用加密套件及算法并验证配置禁用效果

当然有办法啦!我自己每次调整完SSH配置后,都会用这些原生工具来验证禁用效果,完全不需要NMAP。下面给你分享几个实用的方法:

方法一:直接指定单个算法/加密套件测试

这是最直接验证某类算法是否被禁用的方式,用OpenSSH自带的ssh命令就能完成:

  • 测试加密套件(Cipher):比如你想验证aes128-cbc是否被禁用,直接执行:

    ssh -c aes128-cbc your-username@your-server-ip
    

    如果返回类似no matching cipher found: client aes128-cbc server [列出的可用套件]的错误,就说明这个套件已经被成功禁用了;如果能正常连接,说明它还在启用列表里。

  • 测试密钥交换算法(Kex):对应参数是KexAlgorithms,比如测试diffie-hellman-group1-sha1

    ssh -o KexAlgorithms=diffie-hellman-group1-sha1 your-username@your-server-ip
    
  • 测试MAC算法:对应参数是MACs,比如测试hmac-md5

    ssh -o MACs=hmac-md5 your-username@your-server-ip
    
  • 测试主机密钥算法:对应参数是HostKeyAlgorithms,比如测试ssh-dss

    ssh -o HostKeyAlgorithms=ssh-dss your-username@your-server-ip
    

方法二:用Verbose模式查看协商细节

如果想看看当前连接实际用了哪些算法(或者服务器支持哪些协商成功的算法),可以用-v(或者-vv更详细)参数启动SSH:

ssh -v your-username@your-server-ip

在输出日志里,你可以找到类似这些行,它们会显示协商成功的算法:

debug1: kex: algorithm: curve25519-sha256@libssh.org
debug1: kex: host key algorithm: ssh-ed25519
debug1: kex: server->client cipher: chacha20-poly1305@openssh.com MAC: compression: none
debug1: kex: client->server cipher: chacha20-poly1305@openssh.com MAC: compression: none

你可以把这些结果和你禁用的算法列表对比,确认那些要禁用的没有出现在这里。

方法三:批量测试所有支持的算法

如果想一次性验证所有客户端支持的算法状态,可以写个简单的Shell脚本批量测试。比如下面这个脚本可以批量检测加密套件:

#!/bin/bash
SERVER="your-server-ip"
USER="your-username"

echo "Testing all supported SSH ciphers for $SERVER:"
echo "--------------------------------------------"
for cipher in $(ssh -Q cipher); do
  echo -n "Testing $cipher: "
  # 用5秒超时,避免卡住
  ssh -o ConnectTimeout=5 -c "$cipher" $USER@$SERVER exit 2>/dev/null
  if [ $? -eq 0 ]; then
    echo "✓ Enabled"
  else
    echo "✗ Disabled"
  fi
done

把脚本里的SERVERUSER换成你的实际信息,运行后就能看到每个加密套件的启用状态,非常高效。

同理,你也可以把ssh -Q cipher换成ssh -Q kexssh -Q mac或者ssh -Q hostkey,来批量测试其他类型的算法。

方法四:用ssh-keyscan检测主机密钥算法

如果你只关注主机密钥算法的禁用情况,可以用ssh-keyscan工具,它能快速获取服务器支持的主机密钥:

ssh-keyscan -t rsa,ecdsa,ed25519,ssh-dss your-server-ip

如果某个类型的密钥没有返回结果,说明对应的主机密钥算法已经被禁用了。


备注:内容来源于stack exchange,提问作者Rick Brian

火山引擎 最新活动