阿里云CentOS6升级openssh版本
1.检查环境
1 2 3 4 5 6 7 8 9 10 11 |
# openssh安装依赖zlib1.1.4并且openssl>=1.0.1版本就可以 shell>openssl version # 安装相关组件并升级openssh: shell>yum install -y gcc openssl-devel pam-devel zlib zlib-devel # 备份原来的数据 shell>cp -r /etc/ssh/ /etc/ssh-bak # 删除现在安装sshd相关软件包 shell>rpm -e `rpm -qa | grep openssh` --nodeps |
2.升级
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
shell>cd shell>tar xf openssh-8.4p1.tar.gz shell>cd openssh-8.4p1 # 编译sshd shell>./configure --sysconfdir=/etc/ssh # 安装sshd shell>make && make install # 查看下ssh命令的执行路径 shell>which sshd /usr/local/sbin/sshd # 复制源码解压路径的开机启动脚本 shell>cp /root/openssh-8.4p1/contrib/redhat/sshd.init /etc/init.d/sshd # 修改开机启动文件 shell>sed -i '25cSSHD=/usr/local/sbin/sshd' /etc/init.d/sshd shell>sed -i '41c/usr/local/bin/ssh-keygen -A' /etc/init.d/sshd # 更新配置文件 shell>sed -i 's/#Port 22/Port 61022/g' /etc/ssh/sshd_config shell>sed -i 's/#PubkeyAuthentication/PubkeyAuthentication/g' /etc/ssh/sshd_config shell>echo "UseDNS no" >>/etc/ssh/sshd_config shell>echo "AddressFamily inet" >>/etc/ssh/sshd_config shell>echo "PermitRootLogin yes" >>/etc/ssh/sshd_config shell>echo "SyslogFacility AUTHPRIV" >>/etc/ssh/sshd_config shell>echo "ChallengeResponseAuthentication yes" >>/etc/ssh/sshd_config shell>echo "PasswordAuthentication no" >>/etc/ssh/sshd_config # 复制文件到/usr/local/bin/下 shell>cd /root/openssh-8.4p1/contrib shell>chmod +x ssh-copy-id shell>cp ssh-copy-id /usr/local/bin # 启动sshd服务 shell>service sshd restart # 使用VNC或者控制台登录后再执行重启sshd命令 shell>service sshd restart #使用SSH登录,查看下ssh版本 shell>ssh -V |
3.可能的问题
问题1:xshell使用密码登录是正常的,但是使用密钥登录,显示用户密钥未在远程主机上注册。
原因:查看日志文件
shell>less /var/log/secureh
userauth_pubkey: key type ssh-dss not in PubkeyAcceptedKeyTypes [preauth]
使用密钥登录的话,需要使用rsa类型生成密钥,因为新版本的openssh默认禁用了dsa
解决:使用rsa重新生成密钥
问题2:jenkins等ssh插件连接显示“Message [Algorithm negotiation fail]”
原因:ssh升级之后,为了安全,默认不再采用原来一些加密算法。
解决:手工添加原来的加密算法。
shell>echo “KexAlgorithms diffie-hellman-group1-sha1” >>/etc/ssh/sshd_config
shell>service sshd restart