openssh升级

Openssl作为Openssh依赖工具,在升级Openssh过程中可选择不升级,多数情况下,ssl兼容ssh,这里将介绍在ssl为1.0.2基础上升级ssh9.0p1版本。

部署思路:首先安装telnet,防止ssh安装失败无法登录,关防火墙(或者开放22端口),设置开机自启,给系统做备份,防止升级失败,直接卸载旧的ssh、安装新的ssh(注:如果使用ssh登录上主机,进行ssh卸载操作,会话不会中断,建议全程不要中断会话)、测试。

实验准备:升级ssh的原始环境、准备好需要升级的工具包openssh9.0p1,linux系统镜像里的软件仓库。

安装telnet

yum install telnet xinetd telnet-server -y
systemctl start xinetd
systemctl enable xinetd
vim securetty
需要在/etc/securetty文件里最后添加pts/0.......pts/3
systemctl restart telnet.socket
systemctl restart xinetd

然后在本地机器上使用telnet测试

卸载原有的ssh

#备份原有ssh的相关文件,需要备份/etc/pam.d/sshd文件
cp /etc/pam.d/sshd /home
#备份原有的ssh配置:
mv /etc/ssh /etc/ssh_back
#查看当前环境的openssh
rpm -qa | grep ssh
#卸载当前环境的openssh
yum remove openssh -y
#再次查看是否卸载完成
rpm -qa | grep ssh

系统备份

压缩命令:
tar -czpvf /back_up/backup.tgz /etc /usr 2>>/back_up/tar.errors.log
解压命令:
tar -xzpvf /back_up/backup.tgz -C /
restorecon -Rv /
reboot

安装依赖包

yum install  -y gcc gcc-c++ glibc make autoconf openssl openssl-devel pcre-devel  pam-devel
yum install  -y pam* zlib*

安装openssh

tar -zxvf openssh-9.0p1
修改权限:(权限不改,后面可能会报错)
chown -R root:root openssh-9.0p1
进入源码文件夹
cd openssh-9.0p1
源码编译安装:
./configure --prefix=/usr --sysconfdir=/etc/ssh --with-md5-passwords --with-pam --with-zlib --with-tcp-wrappers --with-ssl-dir=/usr/local/ssl --without-hardening && make && make install 
查看版本:
ssh -V

修改openssh配置文件

vim /etc/ssh/sshd_config
写入以下内容(可以备份原来的,然后修改下面加$号的部分内容,$不作为配置文件内的符号,直接复制需删掉)
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_ecdsa_key
HostKey /etc/ssh/ssh_host_ed25519_key

SyslogFacility AUTHPRIV

$ PermitRootLogin yes

$ PasswordAuthentication yes

ChallengeResponseAuthentication no

X11Forwarding no

AcceptEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES
AcceptEnv LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT
AcceptEnv LC_IDENTIFICATION LC_ALL LANGUAGE
AcceptEnv XMODIFIERS

Subsystem       sftp    /usr/libexec/openssh/sftp-server
将pam.d下的sshd还原
mv /home/sshd /etc/pam.d/sshd

注:sshd_config该配置文件内容与卸载ssh时备份的ssh_back内配置一致,可直接将备份的ssh_back文件下的sshd_config直接覆盖过去,找到本文注释 $ 号的配置项,并取消原配置文件的 #,保存并退出。

启动ssh

cp /openssh-9.0p1/contrib/redhat/sshd.init /etc/init.d/sshd
/etc/init.d/sshd restart
ss -ntp |grep 22
systemctl enable sshd 或者 chkconfig --add sshd
systemctl is-enabled sshd 或者 chkconfig --list sshd

清除源码

rm -rf /usr/local/src/openssh

遇到的问题

configure: error: /bin/sh ./config.sub passwords failed

显示password参数问题,调整–with参数

**configure: error: ** working libcrypto not found, check config.log

缺少libcrypto包,解决办法,寻找libcrypto 包,可在openssl下找lib,devel,若没有,需要安装,多存放在devel开发环境里

安装好报错No compatible hostkey. The server supports these methods: rsa-sha2-512,rsa-sha2-256,ecdsa-sha2-nistp256,ssh-ed25519

可能的问题原因,老版本的CRT算法不支持,需下载最新版本的CRT。

排错思路

  1. 确认服务器是否开放22端口
  2. 确认ssh服务是否启动
  3. 确认根目录是否已满
  4. 确认ssh配置文件是否正确(pam.d文件夹下是否又sshd,sshd_config文件配置是否正确)
  5. 确认是不是crt版本过旧
Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐