目录
一、前提工作
1. 先查看系统版本:
2. 准备相关安装包(rpm包)部分rpm包列表:
二、安装telnet(CentOS Linux release 7.9.2009环境)
1. 检查xinetd运行状态及telnet是否安装
2. 创建安装包存放目录 及 rz命令上传RMP包
3. 进入目录/tools/telnet执行安装:(按顺序执行,不然可能报错)
4. 启动telnet服务及查看服务端口
5. 设置root用户登录、关闭防火墙实现root用户登录到telnet
6. 卸载telnet的步骤 (补充)
三、编译安装gcc
1. 查看是否安装gcc 及 创建安装包存放目录
2. 安装gcc (多数情况系统已安装)
四、编译安装(升级openssl)
1. 检查以前安装的包
2. 查看相关依赖包是否安装
五、编译安装(升级openssh,CentOS Linux release 7.9.2009环境)
1. 查看相关依赖包是否安装
2. 创建安装包存放目录 及 rz命令上传压缩包
3. 解压 openssh-9.0p1.tar.gz 及 进入解压后的目录
4. 执行编译安装命令(安装过程建议telnet登录安装,但非必须)
5. CentOS 7 之前的版本需要做以下处理
6. 修改配置文件开启root用户直接登录
7. 开机自启,服务启动
8. 重启openssh测试
9. 升级后ssh ip跳转时的两个错误问题记录
cat /proc/version
cat /etc/redhat-release
uname -a
提示:能连接网络使用yum -y install 进行rpm包的安装更方便,快捷。省去下载和寻找依赖包的烦恼。减少由于依赖包版本问题安装报错的情况。
pam-devel-1.1.8-23.el7.x86_64.rpm
telnet包(telnet依赖xinetd):
telnet-0.17-47.el6.x86_64.rpm
telnet-server-0.17-64.el7.x86_64.rpm
xinetd-2.3.14-38.el6.x86_64.rp
查看xinetd运行状态:service xinetd status
检查telnet是否安装:rpm -qa|grep telnet,rpm -qa|grep xinetd
创建安装包存放目录:mkdir -p /tools/telnet
rz命令上传RMP包到/tools/telnet目录:telnet的3个包
rpm -ivh xinetd-2.3.14-38.el6.x86_64.rpm
rpm -ivh telnet-0.17-47.el6.x86_64.rpm
rpm -ivh telnet-server-0.17-64.el7.x86_64.rpm
systemctl start telnet.socket --重启服务器后失效
systemctl start xinetd --重启服务器后失效
查看telnet服务是否启动:netstat -antupl|grep 23
1. 开放root用户的权限,编辑以下文件.注释掉这一行:auth required pam_securetty.so
vi /etc/pam.d/remote
2. 关闭防火墙
查看防火墙的状态:sudo systemctl status firewalld(Active: active (running)此字样为运行)
临时关闭防火墙:sudo systemctl stop firewalld
临时打开防火墙:sudo systemctl start firewalld
3. 使用SecureCRT,root用户telnet登录系统:(输入用户、密码登录)
1. 关闭telnet服务
systemctl disable xinetd.service --针对永久生效
systemctl stop xinetd.service
systemctl disable telnet.socket --针对永久生效
systemctl stop telnet.socket
2. 执行卸载
rpm -e --nodeps telnet-0.17-47.el6.x86_64
rpm -e --nodeps telnet-server-0.17-64.el7.x86_64
查看是否安装gcc:gcc -v
创建安装包存放目录:mkdir -p /tools/openSSH/gcc
进入目录/tools/openSSH/gcc执行安装:rpm -ivh *.rpm --nodeps --force
(扩展:--nodeps就是安装时不检查依赖关系,比如你这个rpm需要A,但是你没装A,这样你的包就装不上,用了--nodeps你就能装上了。--force就是强制安装,比如你装过这个rpm的版本1,如果你想装这个rpm的版本2,就需要用--force强制安装)
查看是否成功安装:gcc -v
补充说明:
OpenSSL:一个C语言函数库,是对SSL协议的实现。
OpenSSH:是对SSH协议的实现。
从编译依赖上看,openssh依赖于openssl,没有openssl的话openssh就编译不过去,也运行不了。
所以,升级openssh不一定要升级升级openssl。只要openssl还能够支持你新版的openssh就行。
rpm -qa|grep openssl
rpm -qa|grep openssh
openssl version
openssl version -a
查看相关依赖包是否安装:rpm -qa|egrep "gcc|make|perl|zlib|zlib-devel|pam|pam-devel"
或者单个依次查看:rpm -qa|grep gcc
略......后续openssl升级内容
查看相关依赖包是否安装:rpm -qa|egrep "gcc|make|perl|zlib|zlib-devel|pam|pam-devel"
或者单个依次查看:rpm -qa|grep gcc
创建安装包存放目录:mkdir -p /tools/openSSH
rz命令上传压缩包到/tools/openSSH目录:(文件名openssh-9.0p1.tar.gz)
进入/tools/openSSH目录解压:tar -zxvf openssh-9.0p1.tar.gz
进入解压后的目录: cd /tools/openSSH/openssh-9.0p1(注意查看解压目录额用户及组的拥有者)
执行编译安装命令:./configure --sysconfdir=/etc/ssh --with-pam --with-zlib --with-ssl-dir=/usr/local/ssl(本人实测中ssl这个目录不存在也不受影响)
制作安装命令:make && make install(也可以分开执行。注意:执行结束如果出现make: [check-config] Error 1 (ignored)这个可以忽略跳过,执行echo $?检查执行结果)
说明:--prefix 安装路径
--sysconfdir 配置文件路径
--with-pam 认证模块 在/etc/pam.d/目录下管理,启用PAM,需要有一个控制文件,按照提示的路径找到redhat/sshd.pam,并复制到/etc/pam.d/sshd,在/etc/ssh/sshd_config中打开UsePAM yes
--with-md5-passwords 使用md5加密
--without-hardening 加强
--with-ssl-dir 指向LibreSSL/OpenSSL库的安装目录的所在路径
检测执行是否正确:echo $?(代表上一个命令执行后的退出状态。如果返回值是0,就是执行成功;如果是返回值是0以外的值,就是失败)
查看版本:ssh -V
---------CentOS 7 之前的版本 begin------------------
注意--CentOS 7 之前的版本无法正常显示版本信息进行以下操作,操作时进入其目录先确认文件的存在及更新时间
mv /usr/bin/ssh /usr/bin/sshbak
cp /usr/local/bin/ssh /usr/bin/ssh(进入目录/usr/local/bin/查看文件生成时间应该是新安装的)
重要操作---使用(在此之前的只是将新版本的ssh安装、将显示修改,并未将新版本的操作引入service sshd ...的命令中,以下操作将会使之生效)
mv /usr/sbin/sshd /usr/sbin/sshdbak
cp /usr/local/sbin/sshd /usr/sbin/sshd(进入目录/usr/local/sbin/查看文件生成时间应该是新安装的)
--解决启动openssh时非法参数选项问题:ssh-keygen: illegal option -- A
因为默认低版本的ssh-keygen没有-A参数,解决方法:
mv /usr/bin/ssh-keygen /usr/bin/ssh-keygenbak
cp /usr/local/bin/ssh-keygen /usr/bin/ssh-keygen(进入目录/usr/local/bin/查看文件生成时间应该是新安装的)
---------CentOS 7 之前的版本 end------------------
修改配置文件开启root用户直接登录:vi /etc/ssh/sshd_config
(取消#PermitRootLogin yes这一句的注释为PermitRootLogin yes)
1. 进入解压后的安装目录
cd /tools/openSSH/openssh-9.0p1(将安装下contrib/redhat/sshd.init复制到/etc/init.d/sshd中)
2. cp -a /tools/openSSH/openssh-9.0p1/contrib/redhat/sshd.init /etc/init.d/sshd(没有执行权限时可以赋权chmod +x /etc/init.d/sshd注意查看文件sshd的用户及组的拥有者)
3. 把原先的systemd管理的sshd文件移走或者删除,不移走的话影响我们重启sshd服务。
(注意--CentOS 7 之前版本的linux系统不存在 systemd管理服务,跳过此步)
cd /usr/lib/systemd/system/ --移除前可以先查看下是否存在
mv /usr/lib/systemd/system/sshd.service /tools/sshd.servicebak
4.开机自启,加入系统服务
chkconfig sshd on
chkconfig --add sshd
systemctl enable sshd(CentOS 7 之前版本的linux系统不存在systemd,跳过此步)
--init.d方式
/etc/init.d/sshd restart --重启
/etc/init.d/sshd stop --停止
/etc/init.d/sshd start --启动
netstat -lntp --查看验证是否含有22端口的sshd服务
--systemd方式(注意--CentOS 7 之前版本的linux系统不存在 systemd管理服务,跳过此步)
systemctl stop sshd --停止
systemctl start sshd --启动
systemctl restart sshd --重启
systemctl status sshd或systemctl status sshd.service --查看状态
netstat -lntp --查看验证是否含有22端口的sshd服务
或
service sshd restart
查看版本:ssh -V
(一). /etc/ssh/ssh_config line 44: Unsupported option "gssapiauthentication"
此错误root用户下注释掉本机/etc/ssh/ssh_config文件中GSSAPIAuthentication yes项
(二). Unable to negotiate with 192.168.0.193 port 22: no matching host key type found. Their offer: rsa-sha2-512,rsa-sha2-256,ecdsa-sha2-nistp256,ssh-ed25519
这个bug问题
root用户登录
vi /etc/ssh/ssh_config或/etc/ssh/sshd_config(或两个都加)
在末尾加
HostkeyAlgorithms ssh-dss,ssh-rsa
KexAlgorithms +diffie-hellman-group1-sha1
---start如果不行还可加入以下方案:
在~/.ssh目录下添加config文件:vi config,录入以下code:
Host *
HostKeyAlgorithms +ssh-dss
---end
(三). 编译升级openssh时报错:configure: error: PAM headers not found
使用 yum -y install pam-devel解决的问题
(四). 升级openssh时执行./configure报错:configure: error: *** working libcrypto not found, check config.log
应该却少包,yum安装解决:yum install -y openssl-devel
重启ssh
service sshd restart
find / -iname "*openssh-server*" --根目录下查找文件,*为通配符
https://www.likecs.com/show-872807.html