修订号:

[V1.0]

修订人:

[陈土锋]

修订日期:

[2019.06.04]

前言

该文档只适用用于服务器Redhat,centos,Ubuntu和suse系统的openssh升级。需要注意必须要一台一台升级,因为每台系统的环境都不一样,脚本跑出的结果也不一样,所以每个脚本我都加了人机交互的功能,确定没问题了才能进行下一步,避免升级失败带来麻烦。

我的升级方式:

1、登录**.**.**.**,用于测试Telnet,不能通过端口来判断Telnet是否打开,因为有些服务器开启防火墙限制,就算端口打开了,其他机器也不一定能登录。**.**.**.**长时间不动也不会断开。故选该机器。

2、登录**.**.**.**,通过user01用户,批量将相关的脚本和包发送到对应的服务器/tmp目录,并用该机器测试ssh是否正常。

3、直接登录服务器执行升级升级脚本。按照脚本提示测试相关功能,功能正常则进行下一步。

一、升级原理

openssh依赖两个包:zlib-1.2.8.tar.gz,openssl-1.0.1k.tar.gz
(目前服务器均已安装这两个包,升级的时候可以直接先升级openssh,有问题再指定这两个包)
#安装zlib  在光盘中--如有保留
NFJD-YYXX-MYSQL02:~/openssh-7.9p1 # rpm -qa | grep zlib
zlib-32bit-1.2.7-0.10.128
zlib-1.2.7-0.12.3

#安装zlib,构建共享库

tar -zxvf zlib-1.2.8.tar.gz
cd zlib-1.2.8
./configure --shared
/usr/bin/make install
cp zutil.h /usr/local/include
cp zutil.c /usr/local/include
/sbin/ldconfig -v

##进入安装包上传目录,解压openssl

tar -zxvf openssl-1.0.1k.tar.gz
cd openssl-1.0.1k
./config shared zlib
/usr/bin/make
/usr/bin/make install

#修改配置文件,显示正常版本信息

mv /usr/bin/openssl /usr/bin/openssl.bak
ln -s /usr/local/ssl/bin/openssl /usr/bin/openssl
echo "/usr/local/ssl/lib" >> /etc/ld.so.conf
/sbin/ldconfig -v

##软件安装之-Openssh安装

##禁用sshd服务,卸载原来的openssh版本,不要乱删除软件

/sbin/service sshd stop
cp /etc/init.d/sshd /root/
rpm -e openssh-6.2p2-0.9.1 --nodeps
rpm -e openssh-6.2p2-0.9.1

若是系统自带才需要卸载,若是源码编译安装的则不需要卸载。

##解压缩openssh安装包,并进入解压缩文件编译安装

tar -zxvf openssh-8.0p1.tar.gz

cd openssh-8.0p1

./configure --prefix=/usr  --with-md5-passwords --with-ssl-dir=/usr/local/openssl --with-zlib=/usr/local/zlib

/usr/bin/make

/usr/bin/make install

##启动调试ssh

#OS SUSE

cd contrib/suse

cp rc.sshd /etc/init.d/sshd

chmod +x /etc/init.d/sshd

chkconfig --add sshd

#OS redhat 和centos

cd contrib/redhat

cp sshd.init /etc/init.d/sshd

chmod +x /etc/init.d/sshd

chkconfig --add sshd

#OS Ubuntu

使用原来的ssh文件(升级之前需要备份下面两个文件):

cp /etc/init.d/ssh /etc/init.d/ssh.${updateTime}

mv /etc/ssh /etc/ssh.${updateTime}

重启服务:

suse、Redhat和centos:service sshd restart

Ubuntu:service ssh restart

相关技巧:

1、查看系统版本号:cat /etc/issue,uname -a

2、需要四个包: openssh-8.0p1.tar,openssl-1.0.1k.tar,telnet-server,zlib-1.2.8

3、安装gcc  gcc-c++(各系统安装方式看下面步骤)

4、必须开启Telnet,安全问题,这里不说了。

二、Redhat系统升级openssh

说明:

Redhat开启telnet服务

a)vi /etc/xinetd.d/telnet,将disable=yes改成disable=no;

b)启动telnet服务server xinet drestart或者/etc/init.d/xinetd restart使更改生效。

关闭telnet服务

a)vi /etc/xinetd.d/telnet,将disable=no改成disable=yes;

b)重启xinted服务/etc/init.d/xinetd restart

问题:若发现Telnet已开,但是远程Telnet测试不通,则检查机器防火墙是否已打开。

redhat7.4开启telnet,直接开启,不需要xinetd托管:

systemctl start telnet.socket

systemctl start xinetd

1.1 升级脚本

#!/bin/bash
#该脚本用于红帽系统更新
#author:chentufeng
#createTime:2019 05 28
updateTime=`date +"%Y%m%d"`
verSSH="8.0p1" #安装Telnet服务
yum -y install telnet-server # Function : 定义启动关闭Telnet服务函数
# Parameter : $1 kai or guan
#
#
stop_start_telnet(){
if [ $1 == "kai" ];then
sed -i 's@disable[[:space:]][[:space:]]*=[[:space:]][[:space:]]*yes@disable = no@g' /etc/xinetd.d/telnet
elif [ $1 == "guan" ];then
sed -i 's@disable[[:space:]][[:space:]]*=[[:space:]][[:space:]]*no@disable = yes@g' /etc/xinetd.d/telnet
else
echo "目前Telnet处于打开的状态,请知悉!!!"
exit 1
fi /etc/init.d/xinetd restart
} stop_start_telnet kai
read -t 360 -p "请测试Telnet是否能通,是否继续安装?(y or n)" jixu
if [ ${jixu} == "n" ];then
echo "停止安装!"
exit 1
fi tar -zxvf openssh-${verSSH}.tar.gz
echo -e "n\n\n\n\ SSH目前版本是:"
ssh -V
echo -e
read -t 360 -p "是否升级:(y or n)" updateSSH
if [ ${updateSSH} == "y" ];then
cd openssh-${verSSH}
./configure --prefix=/usr --sysconfdir=/etc/ssh --with-md5-passwords
/usr/bin/make
if [ $? -eq 0 ];then
/usr/bin/make install
if [ $? -eq 0 ];then
cd contrib/redhat
mv /etc/init.d/sshd /etc/init.d/sshd.old.${updateTime}
cp sshd.init /etc/init.d/sshd
chmod 755 /etc/init.d/sshd
chkconfig --add sshd
/etc/init.d/sshd restart
else
echo "${hostIP} ssh安装失败!"
exit 1
fi
else
echo "openssh升级失败!!!!!!!!!"
exit 1
fi
else
echo "${hostIP} 不做升级!"
exit 1
fi echo -e "\n\n\n 现在版本是:"
ssh -V echo "请测试openssh是否可用!!!!可用的话请输入“guan”,关闭Telnet服务,否则直接回车或输入“kai”"
read -t 360 -p "是否需要关闭Telnet服务?(kai or guan)" telnetStatus
stop_start_telnet ${telnetStatus}

1.2 可能遇到的问题

1.2.1  Telnet没安装

问题:sed: can't read /etc/xinetd.d/telnet: No such file or directory

updateOpenssh.sh: line 22: /etc/init.d/xinetd: No such file or directory

解决:yum -y install telnet-server telnet

若发现yum安装报错,但是这个yum源能用的,可使用下面命令将rpm包下载下来。

wget http://*****8/yum-redhat66.10/Packages/telnet-server-0.17-48.el6.x86_64.rpm

wget  http://****/yum-redhat66.10/Packages/telnet-0.17-48.el6.x86_64.rpm

wget  http://*****/yum-redhat66.10/Packages/xinetd-2.3.14-40.el6.x86_64.rpm

安装:

rpm -ivh *.rpm

1.2.2  openssl-devel没安装

问题:configure: error: *** working libcrypto not found, check config.log
redhat解决方法:yum -y install openssl-devel
suse OS解决方法:指定openssl安装路径--with-ssl-dir=

 

 

 

三、centos系统升级openssh

说明:

centos6.x开启telnet服务(centos7.x需要用systemctl来启动xinetd)

a)vi /etc/xinetd.d/telnet,将disable=yes改成disable=no;

b)启动telnet服务server xinet drestart或者/etc/init.d/xinetd restart使更改生效。

关闭telnet服务

a)vi /etc/xinetd.d/telnet,将disable=no改成disable=yes;

b)重启xinted服务/etc/init.d/xinetd restart

问题:若发现Telnet已开,但是远程Telnet测试不通,则检查机器防火墙是否已打开。

脚本可以用Redhat的,若是centos7.x系统,将脚本中/etc/init.d/xinetd restart改成systemctl restart xinetd


 

 

 

四、suse系统升级openssh

说明:

suse开启telnet服务

a)vi /etc/xinetd.d/telnet,将disable=yes改成disable=no;

b)启动telnet服务server xinet drestart或者/etc/init.d/xinetd restart使更改生效。

关闭telnet服务

a)vi /etc/xinetd.d/telnet,将disable=no改成disable=yes;

b)重启xinted服务/etc/init.d/xinetd restart

问题:若发现Telnet已开,但是远程Telnet测试不通,则检查机器防火墙是否已打开。


 

1.1 升级脚本

#!/bin/bash
#该脚本用于suse系统更新
#author:chentufeng
#createTime:2019 05 28
updateTime=`date +"%Y%m%d"`
verSSH="8.0p1" #安装telnetzypper
zypper in telnet-server
# Function : 定义启动关闭Telnet服务函数
# Parameter : $1 kai or guan
#
#
stop_start_telnet(){
if [ $1 == "kai" ];then
sed -i 's@disable[[:space:]][[:space:]]*=[[:space:]][[:space:]]*yes@disable = no@g' /etc/xinetd.d/telnet
elif [ $1 == "guan" ];then
sed -i 's@disable[[:space:]][[:space:]]*=[[:space:]][[:space:]]*no@disable = yes@g' /etc/xinetd.d/telnet
else
echo "目前Telnet处于打开的状态,请知悉!!!"
exit 1
fi /etc/init.d/xinetd restart
} stop_start_telnet kai
read -t 360 -p "请测试Telnet是否能通,是否继续安装?(y or n)" jixu
if [ ${jixu} == "n" ];then
echo "停止安装!"
exit 1
fi tar -zxvf openssh-${verSSH}.tar.gz
echo -e "n\n\n\n\ SSH目前版本是:"
ssh -V
echo -e
read -t 60 -p "是否升级:(y or n)" updateSSH
if [ ${updateSSH} == "y" ];then
cd openssh-${verSSH}
./configure --prefix=/usr --sysconfdir=/etc/ssh --with-md5-passwords --with-ssl-dir=/usr/local/openssl
/usr/bin/make
if [ $? -eq 0 ];then
#备份源文件
mv /etc/ssh /etc/ssh.${updateTime}
/usr/bin/make install
if [ $? -eq 0 ];then
cd contrib/suse
mv /etc/init.d/sshd /etc/init.d/sshd.old.${updateTime}
cp rc.sshd /etc/init.d/sshd
chmod 755 /etc/init.d/sshd
chkconfig --add sshd
/etc/init.d/sshd restart
else
echo "${hostIP} ssh安装失败!"
exit 1
fi
else
echo "${hostIP} ssh安装失败!"
exit 1
fi
else
echo "${hostIP} 不做升级!"
exit 1
fi
echo -e "n\n\n\n\ SSH目前版本是:"
ssh -V
echo -e echo "请测试openssh是否可用!!!!可用的话请输入“guan”,关闭Telnet服务,否则直接回车或输入“kai”"
read -t 360 -p "是否需要关闭Telnet服务?(kai or guan)" telnetStatus
stop_start_telnet ${telnetStatus}

1.2 可能遇到的问题

1.2.1 Telnet没安装

suse系统安装Telnet:

suse系统源存放目录:/etc/zypp/repos.d

1、suse配置zypper源

zypper ar http://****:88/suse11_SP3/ suse_20.229

zypper update   必须更新一下源,否则有些机器后面执行zypper命令会自动生成旧的repo源文件,导致安装失败。

2、安装Telnet

zypper  in telnet-server


 

1.2.2 安装ssh成功,但是重启连接不上

查看是否存在sshd进程,切记不要把现在自己连着的进程杀掉,若不小心杀掉只能通过telnet方式进去。如下面查出来的,存在三个进程,导致sshd无法启动的,将相关的进程杀掉之后,重启服务即可。

# ps -ef|grep ssh

root      6533     1  0 11:12 ?        00:00:00 /usr/sbin/sshd -o PidFile=/var/run/sshd_heart.init.pid -f /etc/ssh/sshd_heart_config

root      6547     1  0 11:12 ?        00:00:00 /usr/sbin/sshd -o PidFile=/var/run/sshd_virtual.init.pid -f /etc/ssh/sshd_virtual_config

root      6569     1  0 11:12 ?        00:00:00 /usr/sbin/sshd -o PidFile=/var/run/sshd_intranet.init.pid -f /etc/ssh/sshd_intranet_config


 

 

1.2.3 找不到openssl库文件

问题:configure: error: *** working libcrypto not found, check config.log
redhat解决方法:yum -y install openssl-devel
suse OS解决方法:安装openssl之后,编译指定openssl安装路径--with-ssl-dir
1.2.4 安装成功之后root用户查看ssh -V没问题,但是user01查看版本提示下面错误:
OpenSSL version mismatch. Built against 100020bf, you have 1000103f
原因:/etc/profile 设置umask 077,导致root用户创建文件的时候权限是700,即新安装的openssl权限不足,导致普通用户查看不到openssl文件。
解决:chmod 755 /usr/local/openssl -R

 

五、Ubuntu系统升级openssh

说明:

ubuntu内网可用源:

vim /etc/apt/sources.list

deb http://192.168.20.*:88/ubuntu/ precise main multiverse restricted universe

deb http://192.168.20.*:88/ubuntu/ precise-backports main multiverse restricted universe

deb http://192.168.20.*:88/ubuntu/ precise-proposed main multiverse restricted universe

******省略

更新源:
apt-get update

安装telnet

apt-get -y --force-yes install openbsd-inetd

apt-get -y --force-yes install telnetd

安装完之后可看到下面信息输出:

cat /etc/inetd.conf | grep telnet

telnet stream tcp nowait telnetd /usr/sbin/tcpd /usr/sbin/in.telnetd

启动telnet服务:

/etc/init.d/openbsd-inetd start

问题:有时候启动xinetd服务提示没发现telnetd服务,可能是inetd.conf的telnet配置被注释掉了,取消注释重启即可。

1.1 升级脚本

#!/bin/bash
#该脚本用于ubuntu系统更新
#author:chentufeng
#createTime:2019 05 28
updateTime=`date +"%Y%m%d"`
verSSH="8.0p1" #安装telnet服务
#ubuntu 源放位置:/etc/apt/sources.list
#apt-get update
apt-get -y --force-yes install openbsd-inetd
apt-get -y --force-yes install telnetd
# Function : 定义启动关闭Telnet服务函数
# Parameter : $1 kai or guan
#
#
stop_start_telnet(){
if [ $1 == "kai" ];then
/etc/init.d/openbsd-inetd start
elif [ $1 == "guan" ];then
/etc/init.d/openbsd-inetd stop
else
echo "目前Telnet处于打开的状态,请知悉!!!"
exit 1
fi } stop_start_telnet kai
read -t 360 -p "请测试Telnet是否能通,是否继续安装?(y or n)" jixu
if [ ${jixu} == "n" ];then
echo "停止安装!"
exit 1
fi tar -zxvf openssh-${verSSH}.tar.gz
echo -e
echo "目前版本为:"
ssh -V
echo -e "\n \n" read -t 60 -p "是否升级:(y or n)" updateSSH
if [ ${updateSSH} == "y" ];then
cd openssh-${verSSH}
./configure --prefix=/usr --sysconfdir=/etc/ssh --with-md5-passwords -with-ssl-dir=/usr/local/openssl
/usr/bin/make
if [ $? -eq 0 ];then
# 备份原openssh文件
cp /etc/init.d/ssh /etc/init.d/ssh.${updateTime}
mv /etc/ssh /etc/ssh.${updateTime}
mv /usr/bin/ssh /usr/bin/ssh.${updateTime}
/usr/bin/make install
if [ $? -eq 0 ];then
#systemVer=`awk '{print $1}' /etc/redhat-release`
cd /etc/ssh
mv sshd_config sshd_config.default
cp ../ssh.${updateTime}/sshd_config ./
echo "/etc/init.d/ssh restart" >>/etc/rc.local
service ssh restart
ls -l /etc/init.d/ssh
ls -l /etc/ssh
else
echo "${hostIP} ssh安装失败!"
exit 1
fi
else
echo "openssh升级失败!!!!!!!!!"
exit 1
fi
else
echo "${hostIP} 不做升级!"
exit 1
fi
echo -e
echo "目前版本为:"
ssh -V echo "请测试openssh是否可用!!!!可用的话请输入“guan”,关闭Telnet服务,否则直接回车或输入“kai”"
read -t 360 -p "是否需要关闭Telnet服务?(kai or guan)" telnetStatus
stop_start_telnet ${telnetStatus}

 

1.2 可能遇到的问题

1.2.1 openssl版本过低

configure: error: OpenSSL version header not found.

make: *** No targets specified and no makefile found.  Stop.

OpenSSH_6.2p2, OpenSSL 0.9.8j-fips 07 Jan 2009

解决:升级openssl


 

1.2.2 报下面错误

configure: error: Your OpenSSL headers do not match your

library. Check config.log for details.

If you are sure your installation is consistent, you can disable the check

by running "./configure --without-openssl-header-check".

Also see contrib/findssl.sh for help identifying header/library mismatches.

以上报错处理方法都一样,尝试过多种方法,下面三种可以解决:

1、先重装下面软件,再重新编译ssh

移除多余的文件:

mv /lib/x86_64-linux-gnu/libcrypto.so.1.0.0.lib_x86 ~/bak/

mv /lib/x86_64-linux-gnu/libssl.so.1.0.0.usr_lib ~/bak/

重装:

apt-get install openssl* libssl-dev  openssh*  --reinstall

2、重新安装openssl,指定ssl的库文件和安装目录

echo "/usr/local/openssl/lib" >> /etc/ld.so.conf

/sbin/ldconfig -v

编译ssh的时候加-with-ssl-dir=/usr/local/openssl

3、先用第一种方法恢复默认openssl和ssl库,再用第二种方法

1.2.3 找不到库文件

configure: error: *** working libcrypto not found, check config.log

解决:编译ssh的时候加-with-ssl-dir=/usr/local/openssl

六、redhat7.4升级openssh

1.1 升级脚本:

#!/bin/bash
#该脚本用于北方机器红帽系统7.4更新
#author:chentufeng
#createTime:2019 06 19
updateTime=`date +"%Y%m%d"`
verSSH="8.0p1" #安装Telnet服务
yum -y install telnet-server # Function : 定义启动关闭Telnet服务函数
# Parameter : $1 kai or guan
#
#
stop_start_telnet(){
if [ $1 == "kai" ];then
systemctl start telnet.socket
systemctl start xinetd
echo "telnet 已开启........"
elif [ $1 == "guan" ];then
systemctl stop telnet.socket
systemctl stop xinetd
echo "telnet 已关闭........"
else
echo "目前Telnet处于打开的状态,请知悉!!!"
exit 1
fi
} stop_start_telnet kai
read -t 360 -p "请测试Telnet是否能通,是否继续安装?(y or n)" jixu
if [ ${jixu} == "n" ];then
echo "停止安装!"
exit 1
fi tar -zxvf openssh-${verSSH}.tar.gz
echo -e "n\n\n\n\ SSH目前版本是:"
ssh -V
echo -e
read -t 360 -p "是否升级:(y or n)" updateSSH
if [ ${updateSSH} == "y" ];then
cd openssh-${verSSH}
./configure --prefix=/usr --sysconfdir=/etc/ssh --with-md5-passwords
/usr/bin/make
if [ $? -eq 0 ];then
mv /etc/ssh /etc/ssh.${updateTime}
mv /etc/init.d/sshd /etc/init.d/sshd.${updateTime}
mv /usr/bin/ssh /usr/bin/ssh.${updateTime}
mv /usr/sbin/sshd /usr/sbin/sshd.${updateTime}
/usr/bin/make install
if [ $? -eq 0 ];then
cd contrib/redhat
cp sshd.init /etc/init.d/sshd
chmod 755 /etc/init.d/sshd
chkconfig --add sshd
/etc/init.d/sshd restart
else
echo "${hostIP} ssh安装失败!"
exit 1
fi
else
echo "openssh升级失败!!!!!!!!!"
exit 1
fi
else
echo "${hostIP} 不做升级!"
exit 1
fi echo -e "\n\n\n 现在版本是:"
ssh -V echo "请测试openssh是否可用!!!!可用的话请输入“guan”,关闭Telnet服务,否则直接回车或输入“kai”"
read -t 360 -p "是否需要关闭Telnet服务?(kai or guan)" telnetStatus
stop_start_telnet ${telnetStatus}

1.2 可能遇到的问题:

service sshd restart   --卡主很久,然后报下面错

Restarting sshd (via systemctl):

Job for sshd.service failed because a timeout was exceeded. See "systemctl status sshd.service" and "journalctl -xe" for details.[FAILED]

原因:sshd的启动文件路径改动

解决方法:

找到旧的sshd文件:locate sshd.service

/usr/lib/systemd/system/sshd.service

删除或者改名:

mv /usr/lib/systemd/system/sshd.service /usr/lib/systemd/system/sshd.service.20190619

重新加载:

systemctl daemon-reload

再重新启动sshd:

service sshd restart

附录

1.1 升级openssl

可能会报openssl的错:如找不到openssl头文件,或者openssl版本不一致等,都可以使用指定openssl(--with-ssl-dir)来进行编译安装解决。

查看原来版本:

openssl version -a

OpenSSL 1.1.0……

由于1.1版本和openssh冲突,需要降级到1.0.2

注意:一般有些机器前同事在升级openssh其他版本的时候已经安装了1.0.2,只是没有配置环境,你的解决方法有如下:

1、使用已经安装好的openssl来升级openssh(加参数:--with-ssl-dir=/usr/local/openssl),需添加库目录到/etc/ld.so.conf。参考下面步骤!

2、自己新装一个openssl

步骤如下:

tar zxvf openssl-1.0.2k.tar.gz

cd openssl-1.0.2k/

./config --shared zlib-dynamic --prefix=/usr/local/openssl

make

make test

make install

echo "/usr/local/openssl/lib" >> /etc/ld.so.conf

/sbin/ldconfig -v

mv /usr/bin/openssl /usr/bin/openssl.20190604

ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl

mv /usr/include/openssl /usr/include/openssl.20190604

ln -s /usr/local/openssl/include/openssl /usr/include/openssl

mv /usr/local/bin/openssl /usr/local/bin/openssl.20190604

ln -s /usr/local/openssl/bin/openssl  /usr/local/bin/openssl

问题:若做完上述步骤,使用openssl version查看还是1.1版本,可能是/etc/ld.so.conf文件还配置了其他的lib。

cat /etc/ld.so.conf  发现include /etc/ld.so.conf.d/*.conf配置,发现这个子目录还包含其他lib,需要改成openssl路径:/usr/local/openssl/lib,再/sbin/ldconfig -v,再查看下版本即可。

各系统升级openssh的更多相关文章

  1. redhat系统升级openssh到7.5

    注意,注意,注意重要的事情说三遍,关于ssh的升级不能完全按照别人的教程进行升级,因为每台生产机器都是不一样的,有可能别人能升级成功但是另外一个就可能会失败,因为每台机器上面跑的应用是不一样的,涉及到 ...

  2. linux系统升级openssh

    一.升级前准备工作 安装openssh过程需gcc,zlib-devel,openssl-devel,等编译环境,如果通过rpm包来安装,需要解决各种依赖包,故配置本地yum源解决依赖问题. 1. 配 ...

  3. Linux系统升级更新openssh 7.3p1

    放在最前面:鉴于网上爬虫猖獗,博客被盗时有发生,这里需要来个链接,大家请认准来自博客园的Scoter:http://www.cnblogs.com/scoter2008,本文将持续更新 最近绿盟给扫描 ...

  4. 升级openssl和openssh版本

    一.安装telnet-server服务(建议安装) 1. 查看系统是否已安装telnet-server,linux系统上默认已经安装telnet-client(或telnet),而telnet-ser ...

  5. Ubantu【第一篇】:Ubantu中openssh连接

    h3 { color: rgb(255, 255, 255); background-color: rgb(30,144,255); padding: 3px; margin: 10px 0px } ...

  6. 记一次企业级爬虫系统升级改造(二):基于AngleSharp实现的抓取服务

    爬虫系统升级改造正式启动: 在第一篇文章,博主主要介绍了本次改造的爬虫系统的业务背景与全局规划构思: 未来Support云系统,不仅仅是爬虫系统,是集爬取数据.数据建模处理统计分析.支持全文检索资源库 ...

  7. Debian 8 jessie, OpenSSH ssh connection server responded Algorithm negotiation failed

    安装了debian 8.5 就出问题了. root@debian8:~# lsb_release -aNo LSB modules are available.Distributor ID: Debi ...

  8. ubuntu系统升级记录

    之前在openstack中安装了ubuntu 12.04虚拟机,版本较低,需要升级为高版本.下面分享下升级过程: ubuntu系统升级操作:$ cat /etc/issueUbuntu 12.04.5 ...

  9. 记 Mac Pro 系统升级后,编译安装 PHP-5.6.28 / PHP-7.0 报错修复过程

    买 Mac Pro 的时候,系统为 OS X 10.11.5,编译 PHP-5.6.21 的时候,也遇到一些坑,安装过程记录如下: Mac Pro 编译安装 PHP 5.6.21 及 问题汇总 后来, ...

随机推荐

  1. 36 异常机制 自定义异常 实际应用中的经验总结 尽量添加finally语句块去释放占用的资源

    自定义异常 概念 使用Java内置的异常可以描述在编辑时出现的大部分异常情况.除此之外,用户还可以自定义异常.用户自定义异常类,只需继承Exception类即可. 在程序中使用自定义异常类,大体可分为 ...

  2. Seata XA 模式示例分析

    @ 目录 1 下载示例 2 示例结构 3 业务服务 business-xa 3.1 模块结构 3.2 Controller 层 3.3 Service 层 3.4 stock Feign 客户端 3. ...

  3. BadImageFormatException异常

    访问页面时,抛出BadImageFormatException异常: 1.如果您的应用程序使用了 32 位组件,请确保该应用程序始终采用 32 位应用程序的运行方式. 如果应用程序项目的"平 ...

  4. 洛谷P1162—填涂颜色

    这应该是是第一次记录洛谷题库里的题目吧: 题目描述 由数字00组成的方阵中,有一任意形状闭合圈,闭合圈由数字11构成,围圈时只走上下左右44个方向.现要求把闭合圈内的所有空间都填写成22.例如:6 \ ...

  5. 面板Panel

    面板 主要步骤: 1.new一个frame窗口 格式 Frame frame = new Frame() 2.设置窗口的大小.位置.可见性 3.设置frame窗口的布局格式(分为流式布局,东西南北中, ...

  6. 5分钟了解Redis的内部实现跳跃表(skiplist)

    跳跃表简介 跳跃表(skiplist)是一个有序的数据结构,它通过在每个节点维护不同层次指向后续节点的指针,以达到快速访问指定节点的目的.跳跃表在查找指定节点时,平均时间复杂度为,最坏时间复杂度为O( ...

  7. python在json文件中提取IP和域名

    # qianxiao996精心制作 #博客地址:https://blog.csdn.net/qq_36374896 import re def openjson(path): f = open(pat ...

  8. SolidWorks在一个零件中设置不同的尺寸版本

    问题 比如想设置一系列螺丝的长度,一个一个建零件非常麻烦,希望在一个零件中设置不同的长度尺寸版本 解决 比如想设置不同的拉伸长度,右键拉伸>配置特征 可以生成新配置,设置不同的D1参数,即可生成 ...

  9. STM32注意事项

    1. STM32 USB可配置在全速模式,时钟频率需为48MHz,且精度较高,无法使用芯片内部高速时钟实现(内部时钟精度一般为1%,但USB时钟需要0.1%) 2. 使用重映射功能时,需注意开启AFI ...

  10. luoguP4859 已经没有什么好害怕的了(二项式反演)

    luoguP4859 已经没有什么好害怕的了(二项式反演) 祭奠天国的bzoj. luogu 题解时间 先特判 $ n - k $ 为奇数无解. 为了方便下记 $ m = ( n + k ) / 2 ...