0、应用场景
简单说:
等保要求,LINUX无高风险,而SSH是我们几乎必须开放的!!!!!
如果你要用源码来编译安装我不拦着你,我以前尝试过手动来搞,但是出问题的概率太大,编译起来要求大多。尤其是新版本openssh9.4之后只能用新的openssl来一起编译。
用了工具轻松多了,一劳永逸。有了RPM包,你可以用运维工具直接推下去多好。
主要还得感谢大佬们的无私奉献
1、工具介绍
搬运github大佬的工具
https://github.com/boypt/openssh-rpms
支持centos5/6/7都可以编译,亲测6编译的安装包在7/8上都可以用。使用7编译的包在bclinux、银河麒麟、华为欧拉系统、龙蜥都可以使用。
编译工具下载地址:
https://github.com/boypt/openssh-rpms/archive/refs/heads/main.zip
关于工具介绍
# Edit version.env file if you want a specific version of openssh/openssl combination (or maybe I havn't updated to the latest).
# Download source packages.
# if any error comes up, just manally download the source tar files into the `downloads` dir.
./pullsrc.sh
# Run the script to build RPMs.
# For CentOS 5, the default rpmbuild didn't set the variable of `${dist}`, manually run the script with argument `./compile.sh el5`
./compile.sh
工具下载下来解压是这个样的结构
1、compile.sh:编译脚本,执行生成RPM包用的,特殊说明了下,要是5版本的系统需要./compile.sh el5
2、其中downloads里放的源码包
3、x11-ssh-askpass-1.2.4.1.tar.gz
4、el5/el6/el7对就要编译的系统版本,EL7/SPEC里面包含编译用到的文件
5、RPMS里是存储编译好的RPM包
5、sshd.pam.el7 就是对应操作系统里的/etc/pam.d里的模板文件原始版本
6、openssh.spec。编译好的rpm包放在EL7/RPMS目录下,有能力的小伙伴可以在这里修改相关的参数。
7、pullsrc.sh:openssh相关源码文件下载脚本,如果没有网的话,也可以手动下载源码包,不使用这个脚本
8、version.env:定义了openssh及openssl源码的版本信息
至此,工具基本介绍完毕。
2、准备编译环境
准备编译环境,配置好yum源,安装如下安装包
yum groupinstall -y "Development Tools"
yum install -y imake rpm-build pam-devel krb5-devel zlib-devel libXt-devel libX11-devel gtk2-devel
修改脚本
另外默认openssh源码中是没有ssh-copy-id相关参数的,如果直接编译安装,会发现安装后没有ssh-copy-id命令,因此如果需要用到该命令,需要修改编译参数控制文件openssh.spec。本次要升级的环境为CentOS7,因此我只修改el7目录下的SPECS/openssh.speec文件中第305行下增加一行。
install -m755 contrib/ssh-copy-id $RPM_BUILD_ROOT/usr/bin/ssh-copy-id
继续修改el7目录下的SPECS/openssh.speec文件,第388行后面添加一行。
%attr(0755,root,root) %{_bindir}/ssh-copy-id
准备好源码安装包,我这里手动下载了放到里面downloads目录里
3、开始编译生成安装包
执行源码打包脚本,一定要用bash执行哈!
bash compile.sh
国际惯例,检查一下编译是否成功
检查rpm包是否都以打包好
4、傻瓜脚本一键安装
接下来用到我做好的傻瓜脚本
,说傻瓜脚本是因为我一个检查也没放几乎
把这个保存下来,放到RPMS目录下
#!/bin/bash
cp /etc/pam.d/sshd /etc/pam.d/sshd.before
cp /etc/ssh/sshd_config /etc/ssh/sshd_config.before
rpm -Uvh *.rpm
cd /etc/ssh/
chmod 400 ssh_host_ecdsa_key ssh_host_ed25519_key ssh_host_rsa_key
echo "PermitRootLogin yes" >> /etc/ssh/sshd_config
sed -i -e "s/#UsePAM no/UsePAM yes/g" /etc/ssh/sshd_config
/bin/cp /etc/pam.d/sshd.before /etc/pam.d/sshd
echo "kexalgorithms curve25519-sha256,curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521" >>/etc/ssh/sshd_config
systemctl restart sshd
echo "#################### verify ######################"
ssh -V
echo "#################### end-verify ##################"
然后运行
大功搞成。这个RPMS整个目录下的你打包好,拷贝到其它主机可以直接用了就。
另外说明一下,这个脚本里禁用了不安全的算法如下:
diffie-hellman-group1-sha1
diffie-hellman-group14-sha1
diffie-hellman-group14-sha256
diffie-hellman-group16-sha512
diffie-hellman-group18-sha512
diffie-hellman-group-exchange-sha1
diffie-hellman-group-exchange-sha256
这些玩意是高风险,在一些老的网络设备上都会使用,大家注意,另外升级完后,你的SSH终端也得换个高的,要不登录不上去了。
如果需要支持旧算法,/etc/ssh/sshd_config中修改,之后重启SSHD
KexAlgorithms diffie-hellman-group1-sha1,diffie-hellman-group14-sha1,diffie-hellman-group-exchange-sha1,diffie-hellman-group-exchange-sha256,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group1-sha1,curve25519-sha256@libssh.org
HostKeyAlgorithms +ssh-rsa
关于LINUX登录地址限制的问题请看这里
实用小技巧-限制SSH登录LINUX的主机IP-CSDN博客
也欢迎关注我的公众号【徐sir的IT之路】,一起学习!
————————————————————————————
公众号:徐sir的IT之路
CSDN :徐sir(徐慧阳)_数据库记录,系统集成-CSDN博客
墨天轮:徐sir的个人主页 - 墨天轮
PGFANS:PGFans问答社区:全球唯一的PostgreSQL中文技术交流社区
————————————————————————————