- 问题
之前在mips平台产品上升级了openssl的版本,配置编译时指定了no-rc4参数,结果发现sshd启动会报错
symbol lookup error: /usr/sbin/sshd: undefined symbol: EVP_rc4
显然此时因为openssl生成的库中找不到EVP_rc4这个接口了,自然会报错
- 代码修改
将openssh中cipher.c中相关的代码作注释或修改(此版本openssh-6.5P1)
文件中定义了一个加密类型的结构体数组ciphers, 其中有三条相关元素, 全部注释
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()修改同上
</