各系统升级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 及 问题汇总 后来, ...
随机推荐
- Netty学习(四)FastThreadLocal
FastThreadLocal 前面介绍过 JDK 的 ThreadLocal , 使用不当的话容易造成内存泄漏最终导致OOM, 并且也有一些地方设计的不够好(相对于接下来要介绍的 FastThrea ...
- 【面经】MyBatis常见面试问题
1.什么是 MyBatis? 答:MyBatis 是一个可以自定义 SQL.存储过程和高级映射的持久层框架. 2.讲下 MyBatis 的缓存 答:MyBatis 的缓存分为一级缓存和二级缓存,一级缓 ...
- 使用Resource文件实现应用程序多语言
写在前面: 1.创建资源文件 资源文件命名规则为:文件名(自定义)+cultrueInfo.Name+.resx后缀名 如:A.en-US.resx A.zh-CN.resx 这样命名应用程序代码会根 ...
- [SPDK/NVMe存储技术分析]001 - SPDK/NVMe概述
1. NVMe概述 NVMe是一个针对基于PCIe的固态硬盘的高性能的.可扩展的主机控制器接口. NVMe的显著特征是提供多个队列来处理I/O命令.单个NVMe设备支持多达64K个I/O 队列,每个I ...
- SQLMap参数命令
SQLMap参数命令 --method=<http方法> 指定使用的http方法 --data=<post数据> 提交post数据并对post数据进行测试 --param- ...
- loj536「LibreOJ Round #6」花札(二分图博弈)
loj536「LibreOJ Round #6」花札(二分图博弈) loj 题解时间 很明显是二分图博弈. 以某个点为起点,先手必胜的充要条件是起点一定在最大匹配中. 判断方法是看起点到该点的边有流量 ...
- mybatis插件机制原理
mybatis插件机制及分页插件原理 参考链接:mybatis插件机制及分页插件原理 如何编写一个自定义mybatis插件 参考链接:mybatis 自定义插件的使用
- 客户端回调 Watcher ?
客户端 SendThread 线程接收事件通知,交由 EventThread 线程回调 Watcher. 客户端的 Watcher 机制同样是一次性的,一旦被触发后,该 Watcher 就失效了.
- Servlet之间的关联
- 学习zabbix(八)
一,Zabbix架构 zabbix 是一个基于 WEB 界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案.zabbix 能监视各种网络参数,保证服务器系统的安全运营:并提供灵活的通知机制 ...