之前在mips平台产品上升级了openssl的版本,配置编译时指定了no-rc4参数,结果发现sshd启动会报错
symbol lookup error: /usr/sbin/sshd: undefined symbol: EVP_rc4
显然此时因为openssl生成的库中找不到EVP_rc4这个接口了,自然会报错
static const struct Cipher ciphers[]={
......
//{ "arcfour", SSH_CIPHER_SSH2, 8, 16, 0, 0, 0, 0, EVP_rc4 },
//{ "arcfour128", SSH_CIPHER_SSH2, 8, 16, 0, 0, 1536, 0, EVP_rc4 },
//{ "arcfour256", SSH_CIPHER_SSH2, 8, 32, 0, 0, 1536, 0, EVP_rc4 },
......
};
还有两处调用:
函数:cipher_get_keycontext()中有判断
if (c->evptype == EVP_rc4)
改为:
if (c->evptype == EVP_aes_128_cbc)
(此处可以从ciphers数组中选一种)
函数:cipher_set_keycontext()修改同上
make clean
make
将生成的sshd拷贝到目标平台运行,出现新错误
Could not load host key: /etc/ssh/ssh_host_ed25519_key
可能是因为新制定的加密方式添加了ed25519 做签名验证,而之前系统里没这个算法的证书。生成一下
ssh-keygen -t ed25519 -f /etc/ssh/ssh_host_ed25519_key
报错:unknown key type ed25519
操作系统不支持ed25519密钥
假装支持( → _→)
ssh-keygen -t dsa -f /etc/ssh/ssh_host_ed25519_key
这样就可以了,sshd可以正常运行,ssh远程连接正常