RHEL 5.4 openssh OpenSSH 로 승급 가능7.4p 1 버 전 - shell 처리
고객 30 대 RHEL 5.4 시스템 의 openssh 는 OpenSSH 로 업그레이드 해 야 합 니 다.7.4p 1 버 전
#cat /etc/redhat-release
Red Hat Enterprise Linux Server release 5.4 (Tikanga)
# uname -r
2.6.18-164.el5PAE
# uname -m
i686
원 격 연결 중단 을 방지 하기 위해 telnet 서 비 스 를 켜 야 합 니 다. 방화벽 은 tcp 23 포트 를 열 고 필요 한 파일 을 다운로드 해 야 하기 때문에 2 개의 스 크 립 트 를 썼 습 니 다.
스 크 립 트 1: 소프트웨어 다운로드, 방화벽 tcp 23 포트 오픈, telnet 서비스 시작
#!/bin/bash
#Load system paraments
. /etc/init.d/functions
function DownloadSoftware(){
[ ! -d /root/tools ] && mkdir -p /root/tools
if [ `grep "nameserver 8.8.8.8" /etc/resolv.conf | wc -l` -lt 1 ]
then
echo 'nameserver 8.8.8.8' >> /etc/resolv.conf
fi
wget -O /root/tools/openssl-0.9.8f.tar.gz https://dl.packetstormsecurity.net/crypt/SSL/openssl/openssl-0.9.8f.tar.gz \
--no-check-certificate > /dev/null 2>&1
if [ $? -eq 0 ]
then
action "download openssl-0.9.8f.tar.gz" /bin/true
else
action "download openssl-0.9.8f.tar.gz" /bin/false
exit
fi
wget -O /root/tools/openssh-7.4p1.tar.gz http://ftp.jaist.ac.jp/pub/OpenBSD/OpenSSH/portable/openssh-7.4p1.tar.gz \
> /dev/null 2>&1
if [ $? -eq 0 ]
then
action "download openssh-7.4p1.tar.gz" /bin/true
else
action "download openssh-7.4p1.tar.gz" /bin/false
exit
fi
}
function ModIptables(){
if [ `iptables -L | grep -w "dpt:telnet" | wc -l` -lt 1 ]
then
sed -i '19 i-A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 23 -j ACCEPT' /etc/sysconfig/iptables
iptables-restore /dev/null 2>&1 && \
/etc/init.d/iptables restart
if [ `iptables -L | grep -w "dpt:telnet" | wc -l` -eq 1 ]
then
action "Add Telnet port..." /bin/true
fi
fi
}
function StartTelnet(){
sed -i '/.*disable/s#yes#no#g' /etc/xinetd.d/krb5-telnet
/etc/init.d/xinetd restart
if [ `awk -F "[= ]+" '/.*disable/{print $2}' /etc/xinetd.d/krb5-telnet` = "no" ]
then
action "Start Telnet" /bin/true
else
action "Start Telnet" /bin/false
exit
fi
}
function main(){
DownloadSoftware
ModIptables
StartTelnet
}
main
스 크 립 트 2: openssl 을 마 운 트 해제 하고 설치 하 며 openssh 를 마 운 트 해제 하고 설치 하 며 telnet 서 비 스 를 닫 습 니 다.
#!/bin/bash
#Load system paraments
. /etc/init.d/functions
function InstallOpenSsl(){
#Uninstall OpenSsl.
for i in `rpm -qa openssl*`
do
rpm -e $i --nodeps > /dev/null 2>&1
done
#Install OpenSsl.
cd /root/tools && tar xf openssl-0.9.8f.tar.gz
sleep 5
cd /root/tools/openssl-0.9.8f
./config shared zlib > /dev/null 2>&1 && make > /dev/null 2>&1 && make install > /dev/null 2>&1
if [ $? -eq 0 ]
then
action "Install OpenSsl" /bin/true
else
action "Install OpenSsl" /bin/false
exit
fi
#Config openssl.
mv /usr/include/openssl /usr/include/openssl.bak > /dev/null 2>&1
ln -s /usr/local/ssl/bin/openssl /usr/bin/openssl
ln -s /usr/local/ssl/include/openssl /usr/include/openssl
ln -s /usr/local/ssl/lib/libssl.so.0.9.8 /lib/libssl.so.6
ln -s /usr/local/ssl/lib/libcrypto.so.0.9.8 /lib/libcrypto.so.6
echo "/usr/local/ssl/lib" >> /etc/ld.so.conf
ldconfig -v > /dev/null 2>&1
}
function InstallOpenSsh(){
#Uninstall OpenSsh.
/etc/init.d/sshd stop
mv /etc/ssh/sshd_config /etc/ssh/sshd_config.`date +%F`
for ossh in `rpm -qa | grep openssh*`
do
rpm -e $ossh > /dev/null 2>&1
done
#Install OpenSsh.
cd /root/tools && tar xf openssh-7.4p1.tar.gz
sleep 5
cd /root/tools/openssh-7.4p1
./configure --prefix=/usr/local/ssh --sysconfdir=/etc/ssh --with-ssl-dir=/usr/local/ssl/ > /dev/null 2>&1 && make > /dev/null 2>&1 && make install > /dev/null 2>&1
if [ $? -eq 0 ]
then
action "Install OpenSsh" /bin/true
else
action "Install OpenSsh" /bin/false
exit
fi
#Config OpenSsh.
echo 'export PATH=/usr/local/ssh/bin:/usr/local/ssh/sbin:$PATH' >> /etc/profile
source /etc/profile
echo '/usr/local/ssh/sbin/sshd' >> /etc/rc.d/rc.local
#Modify OpenSsh sshd_config.
sed -i 's/#UseDNS no/UseDNS no/g' /etc/ssh/sshd_config
sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin no/g' /etc/ssh/sshd_config
CheckSsh=(`cat /etc/ssh/sshd_config | grep -E "PermitRootLogin|UseDNS" | grep -v ^# | awk '{print $2}'`)
if [ ${#CheckSsh[*]} -eq 1 ]
then
if [ ${CheckSsh[0]} = no ]
then
action "Modify sshd_config" /bin/true
else
action "Modify sshd_config" /bin/false
exit
fi
else
if [ ${CheckSsh[0]} = no -a ${CheckSsh[1]} = no ]
then
action "Modify sshd_config" /bin/true
else
action "Modify sshd_config" /bin/false
exit
fi
fi
#Start OpenSsh and check it.
/usr/local/ssh/sbin/sshd > /dev/null 2>&1
if [ `lsof -i :22 | grep -o sshd | wc -l` -gt 1 ]
then
action "Start OpenSSH" /bin/true
else
action "Start OpenSSH" /bin/false
exit
fi
}
function StopTelnet(){
sed -i '/.*disable/s#no#yes#g' /etc/xinetd.d/krb5-telnet
/etc/init.d/xinetd restart
if [ `awk -F "[= ]+" '/.*disable/{print $2}' /etc/xinetd.d/krb5-telnet` = "yes" ]
then
action "Stop Telnet" /bin/true
else
action "Stop Telnet" /bin/false
exit
fi
}
function main(){
InstallOpenSsl
InstallOpenSsh
StopTelnet
}
main
스 크 립 트 및 테스트 스 크 립 트 를 작성 할 때 발생 하 는 문제점 을 정리 합 니 다.
1. openssl 설치 후 configure openssh 시
./configure --prefix=/usr/local/ssh --sysconfdir=/etc/ssh
오류 발생:
checking OpenSSL library version... configure: error: OpenSSL >= 0.9.8f required
먼저 스스로 해결 을 시도 해 보 았 지만 처리 할 방법 이 없 었 다. 그 다음 에 인터넷 에서 관련 문 제 를 검색 하면 한 네티즌 의 글 에 따라 힌트 를 받 아 지정 해 야 한다.
--with - ssl - dir 매개 변수
2. 테스트 환경 업그레이드 완료 후 wget 을 사용 하여 소프트웨어 를 다운로드 하려 고 하 는데 오류 가 발생 했 습 니 다.
wget
wget: error while loading shared libraries: libssl.so.6: cannot open shared object file: No such file or directory
#ldd /usr/bin/wget
linux-gate.so.1 => (0x00b69000)
libssl.so.6 => not found
libcrypto.so.6 => not found
libdl.so.2 => /lib/libdl.so.2 (0x008a4000)
librt.so.1 => /lib/librt.so.1 (0x008d8000)
libc.so.6 => /lib/libc.so.6 (0x00733000)
/lib/ld-linux.so.2 (0x00715000)
libpthread.so.0 => /lib/libpthread.so.0 (0x008aa000)
libssl.so.6 => not found
libcrypto.so.6 => not found
openssl 을 삭제 할 때 관련 파일 이 함께 삭제 되 기 때문에 이 문 제 는 ln 이 새로운 파일 에 소프트 연결 만 하면 됩 니 다.
ln -s /usr/local/ssl/lib/libssl.so.0.9.8 /lib/libssl.so.6
ln -s /usr/local/ssl/lib/libcrypto.so.0.9.8 /lib/libcrypto.so.6
서둘러 스 크 립 트 를 다 썼 습 니 다. 일부 집행 권한 은 판단 을 하지 않 았 습 니 다. 지적 할 수 없 으 니 열심히 네티즌 들 에 게 수정 해 주 십시오!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
ZSH에서 물고기까지ZSH는 수년 동안 내 기본 셸이었습니다. 이제 몇 달 동안 사용하면서 ZSH 구성에 대해 몇 가지 사항을 발견했습니다. 우리는 을 제공하는 시스템과 더 빨리 상호 작용하는 경향이 있습니다. 내.zshrc 구성에는 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.