CentOS6-升级OpenSSH

2019-7-18 Jeen

OpenSSH 旧版本存在安全认证及信息泄漏相关的风险,故进行升级。

服务器环境: CentOS6.9 x86_64    OpenSSH 5.3p1

目标:通过远程ssh连接,升级OpenSSH至最新版本

====过程

访问:
http://ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable/
下载最新的安装包。

当前最新的为:
http://ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-8.0p1.tar.gz 

== 升级准备工作:
- 备份现有系统相关文件
/etc/ssh/*
/etc/init.d/sshd
/usr/bin/ssh*
/usr/sbin/sshd 

- 安装telnet-server并开启服务,防止升级过程中失联,导致无法远程连接。
如果你只能通过ssh远程登录服务器,请务必确认telnet可以进行登录管理后,再进行升级。
telnet-server安装及使用方法,请自行查找其他文档,或者看这里。
如果是本机或有其他终端登录窗口,可以忽略这一步。

== 开始升级:
- 调整现有sshd
mv /etc/init.d/sshd /etc/init.d/sshdold

- 下载源码包:
cd /data/soft/
wget http://ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-8.0p1.tar.gz 
tar -zxvf openssh-8.0p1.tar.gz 
cd openssh-8.0p1
./configure --help  #习惯性查看  可忽略
./configure --prefix=/usr/local/openssh/8.0p1
make
make install
##等待安装完成
cp contrib/redhat/sshd.init /etc/init.d/sshd
vi /etc/init.d/sshd
#找到 SSHD 及 start() 中 ssh-keygen 的位置,修改执行文件的路径为新安装的OpenSSH版本路径
#...
SSHD=/usr/local/openssh/8.0p1/sbin/sshd
#...
/usr/local/openssh/8.0p1/bin/ssh-keygen -A
#...
完成后保存

- 如果你是使用密码登录
cd /usr/local/openssh/8.0p1
vi etc/sshd_config
##修改配置,可开启如下设置
PermitRootLogin yes
PasswordAuthentication yes
PubkeyAuthentication yes
##详细的配置项说明,可自行查阅其他文档,进行合理选择

- (可选) 添加一个定时任务,保障 sshd 的重启
crontab -e
*/5 * * * * /sbin/service sshd restart > /dev/null 2>&1

- 关停旧的sshd服务
service sshdold stop

- 启动新的sshd服务 (如果你的终端连接,依然在线)

service sshd restart

通常在执行到 “关停旧的sshd服务” 这步时,ssh连接都会被断开。
此时可以通过  系统本机终端、服务器供应商提供的远程终端、telnet、等待定时任务执行 的方式进行管理,
重启sshd服务后,可使用
ssh -v root@123.123.123.123    #用户名@HOST_IP
查看实际连接信息,确认更新后的openssh版本和生效情况

== 备注

使用ssh连接后升级OpenSSH,请务必确认连接断开后,有其他方法登入管理。

“通过定时任务重启新版本sshd”仅仅为备用方案(算是偏方,不推荐),请留意  “/sbin/service” 须为绝对路径。
CentOS7或其他环境,请参考调整相关流程

运维 CentOS

(0) (76)

发表评论: