各系统升级openssh
修订号: |
[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的更多相关文章
- redhat系统升级openssh到7.5
注意,注意,注意重要的事情说三遍,关于ssh的升级不能完全按照别人的教程进行升级,因为每台生产机器都是不一样的,有可能别人能升级成功但是另外一个就可能会失败,因为每台机器上面跑的应用是不一样的,涉及到 ...
- linux系统升级openssh
一.升级前准备工作 安装openssh过程需gcc,zlib-devel,openssl-devel,等编译环境,如果通过rpm包来安装,需要解决各种依赖包,故配置本地yum源解决依赖问题. 1. 配 ...
- Linux系统升级更新openssh 7.3p1
放在最前面:鉴于网上爬虫猖獗,博客被盗时有发生,这里需要来个链接,大家请认准来自博客园的Scoter:http://www.cnblogs.com/scoter2008,本文将持续更新 最近绿盟给扫描 ...
- 升级openssl和openssh版本
一.安装telnet-server服务(建议安装) 1. 查看系统是否已安装telnet-server,linux系统上默认已经安装telnet-client(或telnet),而telnet-ser ...
- Ubantu【第一篇】:Ubantu中openssh连接
h3 { color: rgb(255, 255, 255); background-color: rgb(30,144,255); padding: 3px; margin: 10px 0px } ...
- 记一次企业级爬虫系统升级改造(二):基于AngleSharp实现的抓取服务
爬虫系统升级改造正式启动: 在第一篇文章,博主主要介绍了本次改造的爬虫系统的业务背景与全局规划构思: 未来Support云系统,不仅仅是爬虫系统,是集爬取数据.数据建模处理统计分析.支持全文检索资源库 ...
- 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 ...
- ubuntu系统升级记录
之前在openstack中安装了ubuntu 12.04虚拟机,版本较低,需要升级为高版本.下面分享下升级过程: ubuntu系统升级操作:$ cat /etc/issueUbuntu 12.04.5 ...
- 记 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 及 问题汇总 后来, ...
随机推荐
- 36 异常机制 自定义异常 实际应用中的经验总结 尽量添加finally语句块去释放占用的资源
自定义异常 概念 使用Java内置的异常可以描述在编辑时出现的大部分异常情况.除此之外,用户还可以自定义异常.用户自定义异常类,只需继承Exception类即可. 在程序中使用自定义异常类,大体可分为 ...
- Seata XA 模式示例分析
@ 目录 1 下载示例 2 示例结构 3 业务服务 business-xa 3.1 模块结构 3.2 Controller 层 3.3 Service 层 3.4 stock Feign 客户端 3. ...
- BadImageFormatException异常
访问页面时,抛出BadImageFormatException异常: 1.如果您的应用程序使用了 32 位组件,请确保该应用程序始终采用 32 位应用程序的运行方式. 如果应用程序项目的"平 ...
- 洛谷P1162—填涂颜色
这应该是是第一次记录洛谷题库里的题目吧: 题目描述 由数字00组成的方阵中,有一任意形状闭合圈,闭合圈由数字11构成,围圈时只走上下左右44个方向.现要求把闭合圈内的所有空间都填写成22.例如:6 \ ...
- 面板Panel
面板 主要步骤: 1.new一个frame窗口 格式 Frame frame = new Frame() 2.设置窗口的大小.位置.可见性 3.设置frame窗口的布局格式(分为流式布局,东西南北中, ...
- 5分钟了解Redis的内部实现跳跃表(skiplist)
跳跃表简介 跳跃表(skiplist)是一个有序的数据结构,它通过在每个节点维护不同层次指向后续节点的指针,以达到快速访问指定节点的目的.跳跃表在查找指定节点时,平均时间复杂度为,最坏时间复杂度为O( ...
- python在json文件中提取IP和域名
# qianxiao996精心制作 #博客地址:https://blog.csdn.net/qq_36374896 import re def openjson(path): f = open(pat ...
- SolidWorks在一个零件中设置不同的尺寸版本
问题 比如想设置一系列螺丝的长度,一个一个建零件非常麻烦,希望在一个零件中设置不同的长度尺寸版本 解决 比如想设置不同的拉伸长度,右键拉伸>配置特征 可以生成新配置,设置不同的D1参数,即可生成 ...
- STM32注意事项
1. STM32 USB可配置在全速模式,时钟频率需为48MHz,且精度较高,无法使用芯片内部高速时钟实现(内部时钟精度一般为1%,但USB时钟需要0.1%) 2. 使用重映射功能时,需注意开启AFI ...
- luoguP4859 已经没有什么好害怕的了(二项式反演)
luoguP4859 已经没有什么好害怕的了(二项式反演) 祭奠天国的bzoj. luogu 题解时间 先特判 $ n - k $ 为奇数无解. 为了方便下记 $ m = ( n + k ) / 2 ...