openssh6.5p1 symbol lookup error: sshd: undefined symbol: EVP_rc4问题

  • 问题

之前在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()修改同上
  • 重新编译
make clean
make
  • 生成新签名key

将生成的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远程连接正常

  • end

你可能感兴趣的:(环境搭建)