查看系统版本
cat /etc/redhat-release
CentOS Linux release 7.5.1804 (Core)
查看ssh 版本
ssh -V
OpenSSH_7.4p1, OpenSSL 1.0.2k-fips 26 Jan 2017
更新安装依赖
1 | yum install -y make gcc gcc-c++ openssl-devel zlib zlib-devel pam-devel |
下载解压
1 | cd /opt |
测试编译源码
1 | cd openssh-9.4p1 |
make安装
1 | make && make install |
–with-ssl-dir是openssl的lib库。通过find / -name "libssl.so" 2>/dev/null找到你的路径
如/opt/openssh-9.4p1/openssl-1.1.1i/libssl.so,/opt/openssh-9.4p1/openssl-1.1.1i就是你的路径。
–without-openssl-header-check 是跳过ssl库版本不一致检查,慎用。
如果出现openssl问题如:
1 | checking OpenSSL library version... configure: error: OpenSSL >= 1.1.1 required (have "100020bf (OpenSSL 1.0.2k-fips 26 Jan 2017)") |
需要升级openssl版本
删除/etc/ssh下的密钥对(只删除密钥对即可,重启会重新生成)
1 | rm -rf /etc/ssh/ssh_host_* |
修改配置文件且去掉注释
1 | vi /etc/ssh/sshd_config |
PermitRootLogin yes
PasswordAuthentication yes
将源码安装包中 opensshd.init 文件复制到 /etc/init.d/ 目录下并添加可执行权限
1 | cp /opt/openssh-9.4p1/opensshd.init /etc/init.d/sshd.init |
启动ssh服务
1 | /etc/init.d/sshd.init start |
备份原有sshd.service文件
1 | mv /usr/lib/systemd/system/sshd.service /opt |
添加sshd.service 文件
1 | vi /usr/lib/systemd/system/sshd.service |
1 | Automatically generated by systemd-sysv-generator |
重载配置
1 | systemctl daemon-reload |
重启ssh服务
1 | systemctl restart sshd |
综合问题解决
安装perl 5,否则下边openssl安装编译不过。
1 | (yum安装perl相关支持) |
升级openssl版本
1 | wget https://www.openssl.org/source/openssl-1.1.1i.tar.gz |
说明:升级后如果执行 openssl version 命令出现openssl: error while loading shared libraries: libssl.so.1.1: cannot open shared object file: No such file or directory错误。执行以下命令即可。
1 | ln -s /usr/local/lib64/libssl.so.1.1 /usr/lib64/libssl.so.1.1 |
升级有风险操作需谨慎(使用telnet 兜底)可选操作
安装xinted
xinetd即extended internet daemon,xinetd是新一代的网络守护进程服务程序,又叫超级Internet服务器。经常用来管理多种轻量级Internet服务。telnet服务就是通过xinetd服务来管理的,所以在安装telnet服务之前需要先安装xinetd服务。
yum install -y xinetd
#yum 安装telnet-server telnet-client
yum install telnet-server telnet
#查看软件版本
rpm -qa telnet-server
telnet-server-0.17-66.el7.x86_64
配置telnet 文件
若此文件不存在,则创建这个文件。将其中disable=yes改为disable=no或注释掉。
1 | vi /etc/xinetd.d/telnet |
1 | service telnet |
修改ListenStream=0.0.0.0:23
1 | 添加防火墙端口 |
重启服务
systemctl restart xinetd
systemctl restart telnet.socket
sudo iptables -A INPUT -p tcp –dport 23 -i ens33 -j ACCEPT
telnet 默认的情况之下不允许 root 以 telnet 进入 Linux 主机,创建普通用户登录系统切换root。
telnet 测试
telnet 192.168.99.147