centos7.6 openssh 7.4 升级到8.4 (rpm 包方式升级)
一、安全备份
为了防止升级过程中升级失败 ,配置telnet 协议也可以连接linux
yum install telnet-server xinetd -y
systemctl enable xinetd telnet.socket
这是因为默认情况下,centos 系统是不允许 root 用户通过 telnet 方式远程登录系统的。如果要使 root 用户可以直接登录,需将以下内容添加到 /etc/securetty 文件末尾:
echo -e 'pts/0\npts/1\npts/2\npts/3' >>/etc/securetty
重启服务telnet
systemctl restart xinetd telnet.socket
验证结果
telnet localhost
将xshell 连接的协议也改为 telnet ,测试能否登录成功
1.2 ssh备份
mkdir /etc/sshconfig_backup
cp /etc/ssh/sshd_config /etc/sshconfig_backup/
cp /etc/pam.d/sshd /etc/sshconfig_backup/pam.d_sshd
cp -a /etc/root/.ssh /etc/sshconfig_backup
二、准备rpm 包
openssh 的源码包自带 spec 文件 ,可以方便地制作rpm 包
参考 https://my.oschina.net/u/4113630/blog/4810155
另外,构建好的rpm我已经上传到csdn .可以无积分下载
三、升级openssh
mkdir tmp
tar xvf openssh-8.4p1_rpm.tar.gz -C ./tmp
rpm -Uvh openssh*.rpm
恢复之前配置
cp /etc/sshconfig_backup/sshd_config /etc/ssh/sshd_config
cp /etc/sshconfig_backup/pam.d_sshd /etc/pam.d/sshd
并加上PermitRootLogin yes允许root用户登录
sed -i "s/#PermitRootLogin yes/PermitRootLogin yes/g" /etc/ssh/sshd_config
因为之前openssh旧版本的 ssh_host*key 的权限太宽松,新版本要求严格
chmod 600 /etc/ssh/*
sshd_config 最后一行添加KexAlgorithms
KexAlgorithms curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group14-sha1,diffie-hellman-group-exchange-sha1,diffie-hellman-group1-sha1
四、可能遇见的问题
1.xshell连接报错 提示“服务器发送了一个意外的数据包。Received:3,expected:20
解决办法: sshd_config 最后一行添加KexAlgorithms
2.bad permissions
Feb 26 18:18:36 N6 sshd[9545]: Unable to load host key “/etc/ssh/ssh_host_ed25519_key”: bad permissions
Feb 26 18:18:36 N6 sshd[9545]: Unable to load host key: /etc/ssh/ssh_host_ed25519_key
Feb 26 18:18:36 N6 sshd[9545]: sshd: no hostkeys available – exiting.
Feb 26 18:18:36 N6 systemd[1]: sshd.service: control process exited, code=exited status=1
解决办法:chmod 600 /etc/ssh/*