目录
1,配置telnet
2,安装openssh
2.1 前置条件
2.2 卸载之前的openssh
2.3 安装
2.3 配置开机启动
2.4 验证
2.5 回滚
2.6 关闭telnet
说明:以下步骤是升级到7.9的,后来进行了更新,请看文档最后部分的8.1升级
为防止openssh升级失败。所以安装telnet。保证openssh升级失败也可以通过telnet连接服务器,进行恢复操作。并不用去机房
yum install -y telnet-server
yum install -y xinetd
systemctl start telnet.socket
systemctl start xinetd
默认情况下,系统是不允许root用户telnet远程登录的。如果要使用root用户直接登录,需设置如下内容。或者可以添加一个可以登录的用户,登录并su到root用户
echo 'pts/0' >>/etc/securetty
echo 'pts/1' >>/etc/securetty
systemctl restart telnet.socket
最后执行telnet ip进行登录即可
需要安装zlib-devel,openssl-devel,可选安装pam-devel
yum install zlib-devel
yum install openssl-devel
yum install pam-devel
如果是rpm安装则:
cp -r /etc/ssh /etc/ssh.old #备份一些之前的文件
rpm -qa|grep openssh
rpm -e --nodeps openssh-clients-6.6.1p1-31.el7.x86_64
rpm -e --nodeps openssh-6.6.1p1-31.el7.x86_64
rpm -e --nodeps openssh-server-6.6.1p1-31.el7.x86_64
rpm -qa|grep openssh
如果是其他方式,可以进入安装目录,执行:
make uninstall
去官网下载安装包http://www.openssh.com/portable.html
上传到服务器并解压到一个目录
tar zxvf openssh-7.9p1.tar.gz
cd openssh-7.9p1
# 配置
./configure --prefix=/usr --sysconfdir=/etc/ssh --with-pam
参数说明:
--sysconfdir=/etc/ssh:这可以防止安装配置文件 /usr/etc
--with-pam:此参数在构建中启用 Linux-PAM支持
# 编译
make
配置权限
chmod 600 /etc/ssh/ssh_host_rsa_key
chmod 600 /etc/ssh/ssh_host_ecdsa_key
chmod 600 /etc/ssh/ssh_host_ed25519_key
# 安装
make install
#其他配置
install -v -m755 contrib/ssh-copy-id /usr/bin
#install -v -m644 contrib/ssh-copy-id.1 /usr/share/man/man1
#install -v -m755 -d /usr/share/doc/openssh-7.9p1
#install -v -m644 INSTALL LICENCE OVERVIEW README*
#install -v -m644 INSTALL LICENCE OVERVIEW README* /usr/share/doc/openssh-7.9p1
#默认是22端口,但是不能root直接登录。如果想直接使用root登录执行以下命令
echo "PermitRootLogin yes" >> /etc/ssh/sshd_config
cp -p contrib/redhat/sshd.init /etc/init.d/sshd
chmod +x /etc/init.d/sshd
chkconfig --add sshd
chkconfig sshd on
chkconfig --list sshd
systemctl restart sshd
ssh -V
如果之前是rpm包安装的。并且按照以上步骤操作,可以直接以下命令进行回滚
yum -y install openssh-clients
yum -y install openssh-server
yum -y install openssh
恢复telnet的禁止root登录特权。如果之前关闭就关闭telnet
其他问题:
出现“PAM is enabled. You may need to install a PAM control file for sshd, otherwise password authentication may fail. Example PAM control files can be found in the contrib/ subdirectory”
按照提示的路径找到redhat/sshd.pam,并复制到/etc/pam.d/sshd
一下升级是在Centos7上升级到openssh8.1的步骤
1,版本验证
ssh -V
openssl version
如果可以先使用yum升级下
yum update openssh -y2,安装telnet防止安装失败
yum install -y telnet-server xinetdsystemctl start telnet.socket
systemctl start xinetd
开机自启动:
systemctl enable xinetd
systemctl enable telnet.socket
#修改配置使root可以登录
echo 'pts/0' >>/etc/securetty
echo 'pts/1' >>/etc/securetty
systemctl restart xinetd
systemctl restart telnet.socket
#查看端口
netstat -lntp | grep 23#然后可以用telnet的23端口登录系统,如果不行尝试关闭防火墙
3,安装openssl和openssh
下载安装包:wget https://openbsd.hk/pub/OpenBSD/OpenSSH/portable/openssh-8.1p1.tar.gz
wget -c https://ftp.openssl.org/source/openssl-1.0.2r.tar.gz# 安装相关依赖
yum install -y gcc gcc-c++ glibc make autoconf openssl openssl-devel pcre-devel pam-devel
yum install -y pam* zlib*# 创建安装目录
mkdir /data/tools -p
#将安装包放到安装目录下解压
tar xfz openssh-8.1p1.tar.gz
tar xfz openssl-1.0.2r.tar.gz#openssl安装部分
#备份相关两个目录或文件
mv /usr/bin/openssl /usr/bin/openssl_bak
mv /usr/include/openssl /usr/include/openssl_bak
#正式安装
cd openssl-1.0.2r/
./config shared && make && make install
#查看安装结果 0表示没问题
echo $?
#创建软连接
ln -s /usr/local/ssl/bin/openssl /usr/bin/openssl
ln -s /usr/local/ssl/include/openssl /usr/include/openssl
#重新加载新配置
echo "/usr/local/ssl/lib" >> /etc/ld.so.conf
/sbin/ldconfig
#查看新版本 如果显示"OpenSSL 1.0.2r 26 Feb 2019 "代表成功
openssl version#安装openssh
#修改文件的默认用户
chown -R root.root openssh-8.1p1
#卸载之前的安装文件 旧的openssh
rpm -e `rpm -qa | grep openssh` --nodeps
#如果之前就是源码安装的,找到之前的安装包,在里面执行
make uninstall
#修改权限
chmod 600 /etc/ssh/ssh_host_*
#然后进入目录安装编译
cd openssh-8.1p1/
./configure --prefix=/usr/ --sysconfdir=/etc/ssh --with-ssl-dir=/usr/local/ssl --with-zlib --with-md5-passwords --with-pam && make
#正式安装
make install
#注意我安装的时候,有两个选项不识别了GSSAPIAuthentication GSSAPICleanupCredentials,这需要修改配置文件注释掉/etc/ssh/sshd_config
grep '^#GSSAPI*' /etc/ssh/sshd_config
#GSSAPIAuthentication yes
#GSSAPICleanupCredentials no#修改配置使root可以登录
grep "^PermitRootLogin" /etc/ssh/sshd_config
#显示结果为:PermitRootLogin yes
#确保配置文件中UsePAM为yes或者追加一个也可以
echo 'UsePAM yes' >> /etc/ssh/sshd_config
#其他配置,后三个可以不做
install -v -m755 contrib/ssh-copy-id /usr/bin
install -v -m644 contrib/ssh-copy-id.1 /usr/share/man/man1
install -v -m755 -d /usr/share/doc/openssh-8.0p1
install -v -m644 INSTALL LICENCE OVERVIEW README* /usr/share/doc/openssh-8.0p1#从解压包openssh-8.1p1中复制文件
cp -a contrib/redhat/sshd.init /etc/init.d/sshd
#修改执行权限
chmod +x /etc/init.d/sshd
#修改开启启动
chkconfig --add sshd
systemctl enable sshd
#移走之前的启动文件
mv /usr/lib/systemd/system/sshd.service /root/ssh_bak
#设置sshd服务开机启动
chkconfig sshd on
#启动关闭ssh的命令
systemctl stop sshd
systemctl start sshd
#查看监听
netstat -lntp
#查看版本
ssh -V4,测试
使用别的服务器登录22端口或者用telnet命令登录查看
telnet ip 22#关闭之前添加的配置 删除pts/0 pts/1...
vi /etc/securetty#验证重启服务器是否可以正常登录,如果没问题关闭telnet
systemctl stop telnet.socket
systemctl disable telnet.socket
systemctl stop xinetd.service
systemctl disable xinetd.service