更新sshd(centos7)

-
2024-07-08

OpenSSH:

步骤 1:卸载现有版本的 OpenSSH

ps:以防失联先装个telnet创建个普通用户给个密码

安装telnet服务端和客户端及守护程序

yum install telnet-server.x86_64
yum install telnet.x86_64
yum install xinetd.x86_64

设置开机启动

systemctl enable xinetd.service
systemctl enable telnet.socket

启动服务(telnet服务是由xinetd守护,所以要启动telnet服务也需要启动xinetd )
systemctl start telnet.socket
systemctl start xinetd

sudo yum remove openssh-server openssh-clients

步骤 2:安装编译所需的依赖

sudo yum groupinstall "Development Tools"
sudo yum install zlib-devel openssl-devel pam-devel selinux-policy-devel autoconf

步骤 3:下载并安装 OpenSSL 1.1.1

  1. 下载 OpenSSL 1.1.1 最新版本:
wget https://www.openssl.org/source/old/1.1.1/openssl-1.1.1w.tar.gz
tar -xzf openssl-1.1.1w.tar.gz
cd openssl-1.1.1w
  1. 编译并安装 OpenSSL:
./config --prefix=/usr/local/openssl --openssldir=/usr/local/openssl
make
sudo make install
  1. 确认环境变量设置: 在 /etc/profile 或用户的 .bashrc 文件中添加以下内容:
  2. 更新动态链接器配置文件并重新加载库路径:
export PATH=/usr/local/openssl/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/openssl/lib
source /etc/profile

echo "/usr/local/openssl/lib" | sudo tee /etc/ld.so.conf.d/openssl.conf
sudo ldconfig

直接./config的可以这样

:echo "/usr/local/lib64/" >> /etc/ld.so.conf
ldconfig
mv /usr/bin/openssl /usr/bin/openssl.old
ln -sv /usr/local/bin/openssl /usr/bin/openssl

步骤 4:下载并解压 OpenSSH 源码包

cd ~
wget https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-9.8p1.tar.gz
tar -xzf openssh-9.8p1.tar.gz
cd openssh-9.8p1.tar.gz

步骤 5:配置编译选项

./configure --prefix=/usr --sysconfdir=/etc/ssh --with-md5-passwords --with-pam --with-ssl-dir=/usr/local/openssl

--prefix 安装目录
--sysconfdir 配置文件目录
--with-ssl-dir 指定 OpenSSL 的安装目录
--with-privsep-path 非特权用户的chroot目录
--with-privsep-user=sshd 指定非特权用户为sshd
--with-zlib 指定zlib库的安装目录
--with-md5-passwords 支持读取经过MD5加密的口令
--with-ssl-engine 启用OpenSSL的ENGINE支持

处理期间遇到的依赖问题

  • 缺少 zlib.h
sudo yum install zlib-devel

缺少 OpenSSL 1.1.1(已在步骤 3 中处理)

缺少 PAM 头文件

sudo yum install pam-devel

步骤 6:编译并安装 OpenSSH

make
sudo make install

步骤 7:调整 SSH 主机密钥文件权限

sudo chmod 600 /etc/ssh/ssh_host_rsa_key
sudo chmod 600 /etc/ssh/ssh_host_ecdsa_key
sudo chmod 600 /etc/ssh/ssh_host_ed25519_key

步骤 8:创建并配置 sshd.service 文件

  1. 创建 /etc/systemd/system/sshd.service 文件:
sudo vi /etc/systemd/system/sshd.service
  1. 在文件中添加以下内容:
[Unit]
Description=OpenSSH server daemon
After=network.target

[Service]
ExecStart=/usr/sbin/sshd -D
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=on-failure
RestartSec=42s

[Install]
WantedBy=multi-user.target
  1. 重新加载 systemd 配置:
sudo systemctl daemon-reload

步骤 9:启动并启用 SSH 服务

sudo systemctl start sshd
sudo systemctl enable sshd

步骤 10:验证 SSH 服务是否正在运行

sudo systemctl status sshd

步骤 11:验证 OpenSSH 版本

ssh -V

要开启root远程登录

sed -i '/#PermitRootLogin/s/^.*$/PermitRootLogin yes/' /etc/ssh/sshd_config

目录