Centos6.5 升级Openssl + Openssh
xu言:
平时很懒,都不想写blog。今天(2018.05.15)开始尝试每天写一篇吧,看我自己能坚持多久!
准备工作:
为了防止在操作过程中导致ssh远程中断,首先安装一个telnet-server服务
yum install -y telnet-server
chkconfig telnet on # 前提是启动了 chkconfig --list |grep "xinetd"
通过chkconfig --list 查看是否开启
这里开启后telnet 状态是 on
Note: 开启后记得在防火墙里面添加23端口,不然...呵呵,你懂的
然后,在外面用你自己的远程工具使用telnet进行测试,测试成功后开始进行升级工作。
所需相关软件包资源汇总:
zlib
http://www.zlib.net/
pam
http://mirror.centos.org/centos/6/os/x86_64/Packages/pam-devel-1.1.1-24.el6.x86_64.rpm
openssl
http://www.openssl.org/source/
openssh
http://www.openssh.com/
源码安装步骤:
zlib 安装
tar xf zlib-1.2.11.tar.gz
./configure --prefix=/usr/local/zlib
make && make install # 如果是非root用户自己加sudo
pam 安装
rpm -ivh pam-devel-1.1.1-24.el6.x86_64.rpm --nodeps # 不检查依赖关系直接安装
OpenSSL 安装(版本根据实际情况下载,这里演示用1.01g版本)
tar zxf openssl-1.0.1g.tar.gz
cd openssl-1.0.1g
./config --prefix=/usr/local/openssl --shared
make && make install
mv /usr/bin/openssl /usr/bin/openssl.bak
mv /usr/include/openssl /usr/include/openssl.bak
ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl
ln -s /usr/local/openssl/include/openssl /usr/include/openssl
echo "/usr/local/openssl/lib" >>/etc/ld.so.conf
验证结果:
ldconfig -v
openssl version -a
OpenSSH 安装
./configure --prefix=/usr --sysconfdir=/etc/ssh --with-ssl-dir=/usr/local/openssl --with-zlib=/usr/local/zlib --with-md5-passwords --with-pam
make && make install
# 复制配置文件
cp ssh_config /etc/ssh/
cp sshd_config /etc/ssh/
cp moduli /etc/ssh/
# 复制启动脚本到/etc/init.d
# 根据安装路径情况,可能需要修改启动脚本中sshd的路径
cp contrib/redhat/sshd.init /etc/init.d/sshd
/usr/sbin/sshd -t -f /etc/ssh/sshd_config
# 加入开机自启
chkconfig --add sshd
chkconfig sshd on
chkconfig sshd --list
# 开启SSH服务
# 不推荐restart。使用restart会造成连不上,需要登录控制台启动。(如果restart了,不能ssh后。可以使用telnet方式处理)
/etc/init.d/sshd start # 启动服务
最后,进行一些收尾工作
chkconfig telent off # 关闭telnet
sudo rpm -e telnet-server-0.17-48.el6.x86_64 --nodeps # 卸载telnet相关rpm包
遇到问题:
报错一:
libssl.so.10: cannot open shared object file: No such file or directory
解决方案:
cd /usr/lib64(如果是32位系统路径则是/usr/lib)
寻找libssl.so* 和 libcrypto.so*
ll /usr/lib64/libssl.so*
ll /usr/lib64/libcrypto.so*
创建软链接
ln -s /usr/lib64/libssl.so.1.0.0 libssl.so.10
ln -s /usr/lib64/libcrypto.so.1.0.0 libcrypto.so.10
报错二:
编译安装openssl报错:POD document had syntax errors at /usr/bin/pod2man line 69. make: *** [install_docs]
mv /usr/binpod2man{,.bak}
报错三:
OpenSSL headers missing - please install first or check config.log ***
yum install openssl-devel
*** zlib.h missing - please install first or check config.log ***
yum install zlib-devel
错误四:
提示给予的文件权限太高不安全,把指定的key文件给予700即可
Sum:
1.因为遇到了openssl 和openssh 不一致的问题,才发现有顺序问题。所以使用源码进行重新编译。先openssl,再 openssh
2.操作前一定开启telnet以防万一,小心使得万年船。特别是生产环境下面
3.不同环境下面操作可能会遇到一些新的问题。但是,仔细阅读报错代码也是一种学习过程
参考资料:
http://www.heminjie.com/system/linux/1766.html
https://www.jianshu.com/p/8c66fdab0c1f
http://blog.sina.com.cn/s/blog_60bf8fe90101715h.html
https://pkgs.org/ # rpm包下载
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库