telnet安装及启动
避免安装失败进不去服务器,可以先安装启动telnet
# 查看是否安装
rpm -qa | grep telnet
#切换到安装包目录
/data/tmp_all/telnet
#安装
rpm -Uvh *.rpm
# 启动telnet服务
systemctl start telnet.socket
systemctl status telnet.socket
# 本机测试
telnet localhost 23
# 用其他机子测试telnet
telnet 服务器IP 23
# 监听端口
ss -tnlp | grep 23
# 查看防火墙状态
systemctl status firewalld
# 临时开放 23 端口
firewall-cmd --zone=public --add-port=23/tcp --permanent
firewall-cmd --reload
# 或者临时关闭防火墙(仅测试用,不推荐)
#systemctl stop firewalld
# 创建临时账号
useradd testuser
passwd
安装gcc、make等
没有就安装一下 (gcc、gcc-c++、make等)
#切换到安装包目录下
yum localinstall *.rpm
# 查询
gcc --version
编译安装zlib1.3.1
tar -zxvf zlib-1.3.1.tar.gz
cd zlib-1.3.1
./configure --prefix=/usr/local/zlib-1.3.1
make && make install
安装perl
没有就安装一下 (perl、perl-IPC-Cmd、perl-Data-Dumper、perl-devel 等)
# 系统有yum(推荐使用,自行处理依赖)
yum localinstall *.rpm
# 安装成功查询
perl -v
编译安装OpenSSL
tar -zxvf openssl-3.5.1.tar.gz
cd openssl-3.5.1
./config --prefix=/usr/local/openssl-3.5.1
make && make install
# 备份旧的OpenSSL,链接新OpenSSL的库文件
mv /usr/bin/openssl{,.bak}
ln -s /usr/local/openssl-3.5.1/bin/openssl /usr/bin/openssl
ln -s /usr/local/openssl-3.5.1/include/openssl /usr/include/openssl
# 检查OpenSSL,看看依赖是否正
ldd /usr/bin/openssl
#若有缺失项:libssl.so.3 => not found、libcrypto.so.3 => not found
#配置动态链接库,执行下面的命令。
echo "/usr/local/openssl-3.5.1/lib/" > /etc/ld.so.conf.d/openssl.conf
echo "/usr/local/openssl-3.5.1/lib64/" > /etc/ld.so.conf.d/openssl.conf
# 激活路径
ldconfig -v
ldd /usr/bin/openssl
openssl version
# OpenSSL 3.5.1 1 Jul 2025 (Library: OpenSSL 3.5.1 1 Jul 2025)
- 缺失项:libssl.so.3 => not found、libcrypto.so.3 => not found
- 配置激活后,一切正常
升级openssh
# 停止OpenSSH服务,并备份
systemctl stop sshd
# 备份
mv /etc/ssh /etc/ssh.bak
mv /usr/sbin/sshd /usr/sbin/sshd.bak
mv /usr/bin/ssh /usr/bin/ssh.bak
# 解压编译安装
tar -zxvf openssh-9.9p1.tar.gz
cd openssh-9.9p1/
./configure --prefix=/usr/local/openssh-9.9p1 --with-ssl-dir=/usr/local/openssl-3.5.1 --with-zlib=/usr/local/zlib-1.3.1
make -j 4
make install
# 取消原有sshd启动方式并配置新版sshd.service
ls /usr/lib/systemd/system/ssh*
rm -f /usr/lib/systemd/system/ssh*
cp contrib/redhat/sshd.init /etc/init.d/sshd
# 修改配置文件
vi /usr/local/openssh-9.9p1/etc/sshd_config
PermitRootLogin yes
PubkeyAuthentication yes
# 复制sshd相关文件到新目录
mkdir /etc/ssh
cp /usr/local/openssh-9.9p1/etc/sshd_config /etc/ssh/sshd_config
cp /usr/local/openssh-9.9p1/sbin/sshd /usr/sbin/sshd
cp /usr/local/openssh-9.9p1/bin/ssh /usr/bin/ssh
cp /usr/local/openssh-9.9p1/bin/ssh-keygen /usr/bin/ssh-keygen
cp /usr/local/openssh-9.9p1/etc/ssh_host_ecdsa_key.pub /etc/ssh/ssh_host_ecdsa_key.pub
# 启动sshd服务并设置开机启动
systemctl daemon-reload
systemctl start sshd && systemctl enable sshd
# 通过以下命令确认是否已设置为开机启动
chkconfig --list | grep sshd
# 检查OpenSSL是否安装成功
ssh -V
systemctl status sshd
过程中出现的部分结果说明,没有影响:
学习了解一下,所以记录下来了
sshd.service is not a native service, redirecting to /sbin/chkconfig.
- 执行
systemctl enable sshd出现如下提示:不影响。说明sshd 服务不是以 systemd 的“原生服务”方式(即没有标准的 systemd unit 文件)注册的,而是以传统的 SysV init 脚本(通常在 /etc/init.d/sshd)方式存在。所以 systemctl 会自动调用 chkconfig 来管理开机启动项,这在 CentOS 7 及兼容系统上是兼容行为。
- 可以通过以下命令确认是否已设置为开机启动
chkconfig --list | grep sshd可以看到 2/3/4/5 级别是启用状态,说明开机会自动启动。
/sbin/restorecon: lstat(/etc/ssh/ssh_host_rsa_key.pub) failed: No such file or directory
-
但如果有客户端强制要求用 RSA 或 DSA 主机密钥进行连接,可能会失败(现代客户端一般优先用 ECDSA 或 ED25519,DSA 已被废弃,RSA 仍较常用)
-
如果有需要,那就自己手动生成需要的密钥:
# 生成 RSA 主机密钥(如已存在会提示覆盖,谨慎操作:先自己备份吧) ssh-keygen -t rsa -b 4096 -f /etc/ssh/ssh_host_rsa_key -N "" # 生成 DSA 主机密钥(不推荐,DSA 已不安全) # ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key -N ""
本次测试涉及到的所有安装包:网盘下载