大半夜被前同事的电话call醒了,说是服务器连不上了。
再一问,说是新来的运维人员更新openssh软件,照着文档编译安装,结果误操作,导致无法连接了。
微信指导折腾个把小时,终于搞定。想起以前每到网络安全周就会有各种安全检查工作,openssh总是被提到最多的高危软件。别人都是编译安装,又麻烦又危险,而我选择源码编译成rpm包,然后rpm ivh安装,方便简单,服务器越多越能体现出优势。
话不多说,祭出文档。
这是针对CentOS6的,7的当然也有了,改天再写,方法大致一样。
openssh依赖zlib1.1.4且openssl>=1.0.1或者>=1.1.0g
# openssl version
OpenSSL 1.0.1e-fips 11 Feb 2013
# rpm -q zlib
zlib-1.2.3-29.el6.x86_64
# rpm -q zlib-devel
package zlib-devel is not installed
# yum install wget gcc pam-devel rpm-build zlib-devel openssl-devel
# mkdir -pv ~/rpmbuild/{BUILD,BUILDROOT,RPMS,SOURCES,SPECS,SRPMS}
# yum update openssl openssl-devel
# cd ~/rpmbuild/SOURCES/
# wget http://ftp.riken.jp/Linux/momonga/6/Everything/SOURCES/x11-ssh-askpass-1.2.4.1.tar.gz
# wget https://ftp4.usa.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-8.0p1.tar.gz
# cd ~/rpmbuild/SOURCES
# tar zxvf openssh-8.0p1.tar.gz
# mv openssh-8.0p1/contrib/redhat/openssh.spec ../SPECS/
# chown -R sshd:sshd ~/rpmbuild/SPECS/
# rm -fr openssh-8.0p1
# cd ../SPECS
# sed -i 's@%define no_gnome_askpass 0@%define no_gnome_askpass 1@g' openssh.spec
# sed -i 's@%define no_x11_askpass 0@%define no_x11_askpass 1@g' openssh.spec
# cd ~/rpmbuild/SPECS
# rpmbuild -ba openssh.spec
# cd ~/rpmbuild/RPMS/x86_64
# ls openssh-*
-rw-r--r--. 1 root root 530744 Apr 24 09:39 openssh-8.0p1-1.el6.x86_64.rpm
-rw-r--r--. 1 root root 617960 Apr 24 09:39 openssh-clients-8.0p1-1.el6.x86_64.rpm
-rw-r--r--. 1 root root 3097960 Apr 24 09:39 openssh-debuginfo-8.0p1-1.el6.x86_64.rpm
-rw-r--r--. 1 root root 402704 Apr 24 09:39 openssh-server-8.0p1-1.el6.x86_64.rpm
# rpm -qa|grep openssh
openssh-clients-5.3p1-122.el6.x86_64
openssh-5.3p1-122.el6.x86_64
openssh-server-5.3p1-122.el6.x86_64
# cd ~/rpmbuild/RPMS/x86_64
# rpm -Uvh openssh-clients-8.0p1-1.el6.x86_64.rpm openssh-8.0p1-1.el6.x86_64.rpm openssh-server-8.0p1-1.el6.x86_64.rpm
# ssh -V
OpenSSH_8.0p1, OpenSSL 1.0.1e-fips 11 Feb 2013
# curl
# wget
# yum list |wc -l
# rpm -qa|grep openssh
openssh-clients-8.0p1-1.el6.x86_64
openssh-8.0p1-1.el6.x86_64
openssh-server-8.0p1-1.el6.x86_64
这一步很重要
安装完后默认情况下OpenSSH不支持root登录
修改 /etc/ssh/sshd_config
把
PermitRootLogin prohibit-password
改成
PermitRootLogin yes
重启SSH
# service sshd restart
如果还是无法登录 可能是SELinux的问题
# setenforce 0
再试就可以了
# yum downgrade openssh-server openssh-clients openssh
# cp /etc/ssh/sshd_config.rpmnew /etc/ssh/sshd_config
# service sshd restart
至此,可以把生成的~/rpmbuild/RPMS/x86_64目录下的rpm包分发到各个服务器然后使用rpm -ivh命令安装了。
生成的包在CentOS6下都是通用的
当然,你要是不放心,可以每个不同的版本生成对应的版本。
我们公司以前环境就很复杂,CentOS6.8,CentOS6.9,RHEL6.5,RHEL6.7,Oracle Linux 7.2,Oracle Linux 7.4,即使有这么多不同的版本,一个shell脚本就搞定了。