ssh技巧

ssh连接报错userauth_pubkey: key type ssh-dss not in PubkeyAcceptedKeyTypes [preauth]终极解决方案

解决办法:
vi /etc/ssh/sshd_config
最后一行添加:
PubkeyAcceptedKeyTypes=+ssh-dss
重启服务:
systemctl restart sshd

另外,如果是RSA不支持的问题,有可能是服务器端,也有可能是客户端有问题,建议放弃RSA,比较麻烦,参考:

另外一种严重的情况,就是阿里云的等保三级的操作系统:

# cat /etc/*ease*
Alibaba Cloud Linux release 3 (OpenAnolis Edition) 
cat: /etc/lsb-release.d: Is a directory
NAME="Alibaba Cloud Linux"
VERSION="3 (OpenAnolis Edition)"
ID="alinux"
ID_LIKE="rhel fedora centos anolis"
VERSION_ID="3"
VARIANT="OpenAnolis Edition"
VARIANT_ID="openanolis"
ALINUX_MINOR_ID="2104"
ALINUX_UPDATE_ID="11"
PLATFORM_ID="platform:al8"
PRETTY_NAME="Alibaba Cloud Linux 3.2104 U11 (OpenAnolis Edition)"
ANSI_COLOR="0;31"
HOME_URL="https://www.aliyun.com/"
Alibaba Cloud Linux release 3 (OpenAnolis Edition) 

看下支持的私钥格式:

# ssh -Q key
ssh-ed25519
ssh-ed25519-cert-v01@openssh.com
ssh-rsa
ssh-dss
ecdsa-sha2-nistp256
ecdsa-sha2-nistp384
ecdsa-sha2-nistp521
sm2
sm2-cert
ssh-rsa-cert-v01@openssh.com
ssh-dss-cert-v01@openssh.com
ecdsa-sha2-nistp256-cert-v01@openssh.com
ecdsa-sha2-nistp384-cert-v01@openssh.com
ecdsa-sha2-nistp521-cert-v01@openssh.com

看起来都支持,没问题。可以深入研究官方加密文档:

https://docs.redhat.com/en/documentation/red_hat_enterprise_linux/8/html/security_hardening/using-the-system-wide-cryptographic-policies_security-hardening#system-wide-crypto-policies_using-the-system-wide-cryptographic-policies

其中一开始就解释了LEGACY策略级别允许 DSA 算法。事实上,要使使用 DSA 密钥的 SSH 公钥身份验证正常工作(即使没有重新启动sshd),只需要降低兼容性策略命令,

所以,终极解决方案:

$ update-crypto-policies --set LEGACY

update-crypto-policies –set LEGACY 是一个用于配置系统加密策略的命令。具体来说,它用于设置系统的加密策略为 LEGACY 模式。
详细解释:
update-crypto-policies:
这是一个用于管理系统范围的加密策略的命令。加密策略定义了系统中各种加密库和工具(如 OpenSSL、GnuTLS、OpenSSH 等)使用的加密算法和协议。
–set LEGACY:
–set 选项用于指定要设置的加密策略。
LEGACY 是一种预定义的加密策略,它允许使用一些较旧、安全性较低的加密算法和协议。这种策略通常用于兼容旧系统或旧应用程序,但可能会降低系统的安全性。
加密策略的常见选项:
DEFAULT: 默认的加密策略,提供良好的安全性和兼容性。
LEGACY: 允许使用一些旧的、安全性较低的加密算法和协议,适用于需要兼容旧系统的场景。
FUTURE: 提供更高的安全性,使用更严格的加密算法和协议,但可能会影响与旧系统的兼容性。
FIPS: 符合 FIPS(Federal Information Processing Standards)标准的加密策略,适用于需要满足特定安全标准的场景。
使用场景:
当你需要与旧系统或旧应用程序兼容时,可以使用 LEGACY 策略。
但请注意,使用 LEGACY 策略可能会降低系统的安全性,因此应谨慎使用,并在可能的情况下尽快恢复到更安全的策略。
示例:
sudo update-crypto-policies –set LEGACY
执行此命令后,系统的加密策略将被设置为 LEGACY,系统将允许使用一些旧的加密算法和协议。

如果你之后想恢复到默认的加密策略,可以使用以下命令:
sudo update-crypto-policies –set DEFAULT

注意事项:
更改加密策略可能会影响系统的安全性,因此在生产环境中应谨慎操作。在更改加密策略后,可能需要重启相关服务或系统才能使更改生效。

参考:https://superuser.com/questions/1464574/ssh-connection-issue-on-fedora-30-with-openssh-8-0-using-ssh-dss-still-asking