oracle rac升级openssh,升级OpenSSH详细步骤
由于系统扫描到OpenSSH版本太低,所以需要将其升级到高版本。网上搜罗数个文章,都多多少少有点疏漏。加上自己之前没升级过SSH,参考好几个文章查缺补漏才升级成功,着实废了不少劲儿。所以综合一下前辈们的文章,做一个详细的记录,让初学者能够按照步骤升级成功。
本文涉及到的、未涉及到的文件都上传至CSDN:
大家可自行下载。
华丽的分割线==================
事前工作:
先将所有安装文件包传至/usr/local/src文件夹下。
包含SSL和SSh安装包(源码)、telnet-server安装包(rpm)
事后工作:
删除无用安装包;
删除临时建立的账户;
关闭telnet服务。
一、安装配置TELNET服务
1、先安装配置telnet,在卸载ssh之后还可以远程连接服务器
rpm包安装,不赘述。
配置 vi /etc/xinetd.d/telnet
default: on
description: The telnet server serves telnet sessions; it uses \
unencrypted username/password pairs for authentication.
service telnet
{
flags = REUSE
socket_type = stream
wait = no
user = root
server = /usr/sbin/in.telnetd
log_on_failure += USERID
disable = no --这里原来是yes,改成no
}
重启telnet服务
service xinetd stop
Stopping xinetd: [ OK ]
service xinetd start
在此服务器上重新建立一个普通用户,客户端利用普通用户登录,再换成root用户。
2、在其他客户端上已telnet的方式登录服务器
telnet 192.189.200.134 23
Trying 192.189.200.134…
Connected to 192.189.200.134 (192.189.200.134).
Escape character is ‘^]’.
Red Hat Enterprise Linux Server release 5.5 (Tikanga)
Kernel 2.6.18-194.el5 on an x86_64
login: 用户名
Password: 密码
telnet进入服务器后,可以切换到root用户,进行程序安装工作。
二、安装OpenSSL
1、卸载原有SSL
rpm -qa | grep openssl
openssl-0.9.8e-12.el5_4.6
openssl097a-0.9.7a-9.el5_2.1
openssl097a-0.9.7a-9.el5_2.1
openssl-devel-0.9.8e-12.el5_4.6
openssl-0.9.8e-12.el5_4.6
openssl-devel-0.9.8e-12.el5_4.6
#rpm -e rpm -qa | grep openssl --allmatches --nodeps
2、编译安装 OpenSSL
cd /usr/local/src/
tar -xzvf openssl-1.0.1j.tar.gz
cd /usr/local/src/openssl-1.0.1j
./config --prefix=/usr/local/openssl -shared (shared命令必须加)
make
make test
make install
make test (进行 SSL 加密协议的完整测试,如果出现错误就要一定先找出哪里的原因,否则一味继续,可能最终导致 SSH 不能使用,后果很严重的!)
3、配置库文件搜索路径
在/etc/ld.so.conf文件的最后面,添加如下内容:
/usr/local/openssl/lib
最终成为:
include ld.so.conf.d/*.conf
/usr/local/openssl/lib
4、执行ldconfig -v 刷新缓存文件
5、添加OPESSL的环境变量,在/etc/profile的最后一行,添加:
export OPENSSL=/usr/local/openssl/bin
export PATH=PATH:$HOME/bin
6、使配置文件立即生效:
source /etc/profile
7、依次如下执行:
cd /usr/local
ldd /usr/local/openssl/bin/openssl
会出现类似如下信息:
linux-vdso.so.1 => (0x00007fff3bc73000)
libdl.so.2 => /lib64/libdl.so.2 (0x00007fc5385d7000)
libc.so.6 => /lib64/libc.so.6 (0x00007fc538279000)
/lib64/ld-linux-x86-64.so.2 (0x00007fc5387db000)
8、查看路径
which openssl
/usr/local/openssl/bin/openssl
9、查看版本
…]# openssl version
OpenSSL 1.0.1j 15 Oct 2014
到此,OpenSSL安装完毕
三、安装OpenSSH
1、卸载原有SSH
rpm -qa | grep openssh
openssh-server-4.3p2-41.el5
openssh-4.3p2-41.el5
openssh-askpass-4.3p2-41.el5
openssh-clients-4.3p2-41.el5
rpm -e rpm -qa | grep openssh --allmatches --nodeps
2、升级 OpenSSH
cd /usr/local/src/
tar -xzvf openssh-6.7p1.tar.gz
cd /usr/local/src/openssh-6.7p1
./configure --prefix=/usr --sysconfdir=/etc/ssh --with-pam --with-zlib=/usr/local/zlib --with-ssl-dir=/usr/local/openssl --with-md5-passwords
(注意,如果 configure 时提示 PAM 有错误,一般是因为系统中没有安装 pam-devel RPM 包,找到安装光盘,安装 pam-devel 就可以解决了,rpm -ivh pam-devel版本号。此问题亦可忽略。)
make
make install
3、生成ssh服务管理脚本:
进入ssh解压目录
#cd /usr/local/src/openssh-6.7p1/contrib/redhat
#cp sshd.init /etc/init.d/sshd
#chmod +x /etc/init.d/sshd (直接覆盖,权限会继承)
#chkconfig --list |grep sshd 检查ssh服务是否开机启动,如果没有,执行下面命令
#chkconfig --add sshd
4、最后,启动 SSH 服务使修改生效:
/etc/init.d/sshd restart 或者 service sshd restart
5、重启后确认一下当前的 OpenSSH 和 OpenSSL 是否为新版:
ssh -V
OpenSSH_6.7p1, OpenSSL 1.0.1j 15 Oct 2014
OpenSSH自动化安装脚本
执行脚本前需要:
yum -y install pcre pcre-devel zilb zlib-devel gcc* perl openssl openssh
#!/bin/bash#更新ssh服务脚本
##下载
echo “正在获取安装包”
echo “获取openssh,建议本地下载openssh,wget比较缓慢”
wget http://ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-8.6p1.tar.gz
echo “获取openssl"
wget https://www.openssl.org/source/openssl-1.1.1h.tar.gz
echo “获取zlib”
wget http://www.zlib.net/zlib-1.2.11.tar.gz
sleep 3s
echo "请确保脚本与以下文件在同一文件夹:zlib-1.2.11.tar.gz、openssh-8.6p1.tar.gz、openssl-1.1.1h.tar.gz"echo “如果没有上述文件,请中断(Ctrl+C)脚本。使用编辑器打开本文件,头部有下载方法”
sleep 1echo “[> ] 33%"
sleep 1echo "[> ] 66%"
sleep 1echo "[================> ] 99%”
#解压
mkdir -pv /usr/local/sshupdate
echo -e “\033[1;32m 解压安装包 \033[0m”
tar -zxvf zlib-1.2.11.tar.gz -C /usr/local/sshupdate
tar -zxvf openssl-1.1.1h.tar.gz -C /usr/local/sshupdate
tar -zxvf openssh-8.6p1.tar.gz -C /usr/local/sshupdate
b=’’
for ((i=0;$i<=100;i+=2))
do
printf “执行进度 :[%-50s]%d%%\r” $b i
sleep 0.01
b=#b
done
echo -e “\n”
#安装zlib
echo -e “\033[1;32m 编译安装 zlib \033[0m”
cd /usr/local/sshupdate/zlib-1.2.11/
./configure --prefix=/usr/local/zlib
make && make install
b=’’
for ((i=0;$i<=100;i+=2))
do
printf “执行进度 :[%-50s]%d%%\r” $b i
sleep 0.01
b=#b
done
echo -e “\n”
#安装openssl
echo -e “\033[1;32m 编译安装openssl \033[0m”
cd /usr/local/sshupdate/openssl-1.1.1h/
./config --prefix=/usr/local/ssl -d shared
make && make install
echo ‘/usr/local/ssl/lib’ >> /etc/ld.so.conf
ldconfig -v
b=’’
for ((i=0;$i<=100;i+=2))
do
printf “执行进度 :[%-50s]%d%%\r” $b i
sleep 0.01
b=#b
done
echo -e “\n”
#安装
opensshecho -e “\033[1;32m 编译安装openssh \033[0m”
mv /etc/ssh /etc/ssh.bak
cd /usr/local/sshupdate/openssh-8.6p1/
./configure --prefix
=/usr/local/openssh–sysconfdir
=/etc/ssh --with-ssl-dir
=/usr/local/ssl --with-zlib=/usr/local/zlib
make && make install
b=’’
for ((i=0;$i<=100;i+=2))
do
printf “执行进度 :[%-50s]%d%%\r” $b i
sleep 0.01
b=#b
done
echo -e “\n”
#修改配置文件 sshd_config
echo -e “\033[1;32m 修改sshd_config配置文件 \033[0m”
echo “X11Forwarding yes” >> /etc/ssh/sshd_config
echo"X11UseLocalhostno">>/etc/ssh/sshd_config
echo"UseDNSno">>/etc/ssh/sshd_config
echo ‘PermitRootLoginyes’>>/etc/ssh/sshd_config
echo’PubkeyAuthenticationyes’>>/etc/ssh/sshd_config
echo’PasswordAuthenticationyes’>>/etc/ssh/sshd_config
echo’KexAlgorithmscurve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group14-sha1’ >> /etc/ssh/sshd_config
echo"XAuthLocation/usr/bin/xauth">>/etc/ssh/sshd_config
b=’’
for ((i=0;$i<=100;i+=2))
do
printf “执行进度 :[%-50s]%d%%\r” $b i
sleep 0.01
b=#b
done
echo -e “\n”
#备份 /etc/ssh 原有文件
echo -e “\033[1;32m 备份ssh文件 \033[0m”
mv /usr/sbin/sshd /usr/sbin/sshd.bak
cp -rf /usr/local/openssh/sbin/sshd /usr/sbin/sshd
mv /usr/bin/ssh /usr/bin/ssh.bak
cp -rf /usr/local/openssh/bin/ssh /usr/bin/ssh
mv /usr/bin/ssh-keygen /usr/bin/ssh-keygen.bak
cp -rf /usr/local/openssh/bin/ssh-keygen /usr/bin/ssh-keygen
b=’’
for ((i=0;$i<=100;i+=2))
do
printf “执行进度 :[%-50s]%d%%\r” $b i
sleep 0.01
b=#b
done
echo -e “\n”
重启服务
echo -e "\033[1;32m “重启服务”\033[0m"systemctl stop sshd.service
rm -rf /lib/systemd/system/sshd.service
systemctl daemon-reload
mv/usr/local/sshupdate/openssh-8.6p1/contrib/redhat/sshd.init /etc/init.d/sshd
/etc/init.d/sshd restart
systemctl status sshd
sleep 2s
b=’’
for ((i=0;$i<=100;i+=2))
do
printf “执行进度 :[%-50s]%d%%\r” $b i
sleep 0.01
b=#b
done
echo -e “\n”
添加开机自启动服务
echo -e “\033[1;32m “添加开机自启动服务”\033[0m"chkconfig --add sshd
chkconfig --list sshd
sleep 2s
echo -e “\033[1;32m"建议安装telnet服务” \033[0m”
#查看ssh当前版本
echo -e “\033[1;32m “ssh服务更新完成,目前版本”\033[0m”
echo ssh -V
echo -e “\033[5;35m"建议安装telnet服务” \033[0m"




