一键升级OpenSSL、OpenSSH

  • 14
  • 1,486 阅读
  • A+
所属分类:命令脚本 安全整改

OpenSSL、OpenSSH一般官方每年会更新两次,修复已知安全漏洞和各种程序Bug。随着越来越多的企业对安全意识的提高,一般每年也会内部开展两次安全整改检查工作,其中OpenSSL、OpenSSH漏洞是企业安全扫描系统中最常见的风险项之一。为方便升级软件,写下一键升级脚本自用,脚本没什么技术含量,各种判断和命令堆叠,有需要的朋友可以参考。

初次上传代码到GitHub,很是新鲜:https://github.com/wanghualang/update-openssl-openssh

升级过程

升级脚本自用为主,因操作系统环境各异、个人水平不同、脚本代码存在问题等等原因,升级脚本未必适合所有用户。简易录制一个全程升级过程,软件升级完毕后会重新登陆SSH,以验证脚本代码的可用性。

脚本代码

  1. #!/bin/bash  
  2. clear  
  3.   
  4. ####### 通用代码 #######  
  5.   
  6. #脚本变量  
  7. #编译升级更新版本的源码包,可以根据软件官网版本号修改xx_version;  
  8. date=`date "+%Y%m%d"`  
  9. zlib_version="zlib-1.2.11"  
  10. dropbear_version="dropbear-2018.76"  
  11. openssl_version="openssl-1.0.2p"  
  12. openssh_version="openssh-7.9p1"  
  13. zlib_download="http://zlib.net/$zlib_version.tar.gz"  
  14. dropbear_download="https://matt.ucc.asn.au/dropbear/releases/$dropbear_version.tar.bz2"  
  15. openssl_download="https://www.openssl.org/source/$openssl_version.tar.gz"  
  16. openssh_download="https://openbsd.hk/pub/OpenBSD/OpenSSH/portable/$openssh_version.tar.gz"  
  17. system_version=`cat /etc/redhat-release`  
  18. rhel4_version=`cat /etc/redhat-release | grep "release 4" | wc -l`  
  19. rhel5_version=`cat /etc/redhat-release | grep "release 5" | wc -l`  
  20. rhel6_version=`cat /etc/redhat-release | grep "release 6" | wc -l`  
  21. rhel7_version=`cat /etc/redhat-release | grep "release 7" | wc -l`  
  22. gcc_intall_status==`rpm -qa | grep -w gcc | wc -l`  
  23. gcc_c_intall_status==`rpm -qa | grep -w gcc-c++ | wc -l`  
  24. pam_devel_intall_status==`rpm -qa | grep pam-devel | wc -l`  
  25. bzip2_intall_status=`rpm -qa | grep bzip2 | wc -l`  
  26. wget_intall_status=`rpm -qa | grep wget | wc -l`  
  27. make_intall_status=`rpm -qa | grep make | wc -l`  
  28. openssl_rpm_status=`rpm -qa | grep -w openssl | wc -l`  
  29. openssh_rpm_status=`rpm -qa | grep -w openssh-server | wc -l`  
  30. telnet_rpm_status=`rpm -qa | grep -w telnet-server | wc -l`  
  31. openssh_running_status=`ps aux | grep sshd | grep -v grep | wc -l`  
  32.   
  33. #检查当前用户是否为root  
  34. if [ $(id -u) != 0 ]; then  
  35. echo -e "当前登陆用户为普通用户,必须使用Root用户运行脚本,五秒后自动退出脚本" "\033[31m Failure\033[0m"  
  36. echo ""  
  37. sleep 5  
  38. exit  
  39. fi  
  40.   
  41. #使用说明  
  42. echo -e "\033[33m《一键升级OpenSSL、OpenSSH脚本》使用说明\033[0m"  
  43. echo ""  
  44. echo "A.一键升级脚本仅适用于RHEL/CentOS操作系统,支持4.x、5.x、6.x、7.x各系统版本;"  
  45. echo "B.必须使用Root用户运行脚本,并确保本机已配置好软件仓库以及可以正常访问互联网;"  
  46. echo "C.RHEL4.x - 5.x操作系统会临时安装Telnet,通信端口为23,升级结束后会引导卸载;"  
  47. echo "D.RHEL6.x - 7.x操作系统会临时安装DropBear,通信端口为6666,升级结束后会引导卸载;"  
  48. echo "E.本机旧版本的OpenSSL、OpenSSH、Lib库文件全部备份在/tmp/backup_$date文件夹。"  
  49. echo ""  
  50.   
  51. #判断操作系统  
  52. echo "当前本机操作系统版本:"$system_version  
  53. echo ""  
  54.   
  55. #最新软件版本  
  56. echo "当前官网最新软件版本:"$openssl_version、$openssh_version  
  57. echo ""  
  58.   
  59. #禁用SElinux  
  60. setenforce 0 > /dev/null 2>&1  
  61.   
  62. #禁用防火墙  
  63. service iptables stop > /dev/null 2>&1  
  64. service ip6tables stop > /dev/null 2>&1  
  65.   
  66. ####### 通用代码 #######  
  67.   
  68. ####### 升级软件 #######  
  69. function update() {  
  70. echo -e "\033[33m开始升级OpenSSL、OpenSSH\033[0m"  
  71. echo ""  
  72.   
  73. #安装软件依赖包  
  74. yum -y install gcc gcc-c++ pam-devel bzip2 wget make > /dev/null 2>&1  
  75. cd /tmp  
  76. wget --no-check-certificate $zlib_download > /dev/null 2>&1  
  77. tar xzf $zlib_version.tar.gz  
  78. cd /tmp/$zlib_version  
  79. ./configure --shared > /dev/null 2>&1  
  80. make > /dev/null 2>&1  
  81. make install > /dev/null 2>&1  
  82. if [ $gcc_intall_status != 0 ] && [ $gcc_c_intall_status != 0 ] && [ $pam_devel_intall_status != 0 ] && [ $bzip2_intall_status != 0 ] && [ $wget_intall_status != 0 ] && [ $make_intall_status != 0 ] && [ -e /usr/local/lib/libz.so ];then  
  83. echo -e "安装软件依赖包成功" "\033[32m Success\033[0m"  
  84. else  
  85. echo -e "安装软件依赖包失败,五秒后自动退出脚本" "\033[31m Failure\033[0m"  
  86. echo ""  
  87. sleep 5  
  88. exit  
  89. fi  
  90. echo ""  
  91.   
  92. #解压软件源码包  
  93. cd /tmp  
  94. wget --no-check-certificate $dropbear_download > /dev/null 2>&1  
  95. wget --no-check-certificate $openssl_download > /dev/null 2>&1  
  96. wget --no-check-certificate $openssh_download > /dev/null 2>&1  
  97. tar xjf $dropbear_version.tar.bz2  
  98. tar xzf $openssh_version.tar.gz  
  99. tar xzf $openssl_version.tar.gz  
  100. if [ -d /tmp/$dropbear_version ] && [ -d /tmp/$openssh_version ] && [ -d /tmp/$openssl_version ];then  
  101. echo -e "解压软件源码包成功" "\033[32m Success\033[0m"  
  102. else  
  103. echo -e "解压软件源码包失败,五秒后自动退出脚本" "\033[31m Failure\033[0m"  
  104. echo ""  
  105. sleep 5  
  106. exit  
  107. fi  
  108. echo ""  
  109.   
  110. #安装远程软件  
  111. if [ $rhel4_version == 1 ] || [ $rhel5_version == 1 ];then  
  112. yum -y install telnet-server xinetd > /dev/null 2>&1  
  113. sed -i '/disable/d' /etc/xinetd.d/telnet  
  114. sed -i '/log_on_failure/a disable  = no' /etc/xinetd.d/telnet  
  115. sed -i '/disable/d' /etc/xinetd.d/telnet  
  116. sed -i '/log_on_failure/a disable  = no' /etc/xinetd.d/krb5-telnet  
  117. mv /etc/securetty /etc/securetty.bak  
  118. service xinetd restart > /dev/null 2>&1  
  119. fi  
  120.   
  121. if [ $rhel6_version == 1 ] || [ $rhel7_version == 1 ];then  
  122. cd /tmp  
  123. tar xjf $dropbear_version.tar.bz2  
  124. cd $dropbear_version  
  125. ./configure > /dev/null 2>&1  
  126. make > /dev/null 2>&1  
  127. make install > /dev/null 2>&1  
  128. mkdir /etc/dropbear  
  129. /usr/local/bin/dropbearkey -t dss -f /etc/dropbear/dropbear_dss_host_key > /dev/null 2>&1  
  130. /usr/local/bin/dropbearkey -t rsa -s 4096 -f /etc/dropbear/dropbear_rsa_host_key > /dev/null 2>&1  
  131. /usr/local/sbin/dropbear -p 6666 > /dev/null 2>&1  
  132. fi  
  133.   
  134. #备份旧版本lib  
  135. service sshd stop > /dev/null 2>&1  
  136. mkdir /tmp/backup_$date  
  137. if [ $(getconf WORD_BIT) == 32 ] && [ $(getconf LONG_BIT) == 64 ];then  
  138. ls -lhR /lib > /tmp/backup_$date/old_lib_list.txt  
  139. ls -lhR /usr/lib > /tmp/backup_$date/old_usr_lib_list.txt  
  140. ls -lhR /lib64 > /tmp/backup_$date/old_lib64_list.txt  
  141. ls -lhR /usr/lib64 > /tmp/backup_$date/old_usr_lib64_list.txt  
  142. tar czf /tmp/backup_$date/lib_backup.tar.gz /lib > /dev/null 2>&1  
  143. tar czf /tmp/backup_$date/usr_lib_backup.tar.gz /usr/lib > /dev/null 2>&1  
  144. tar czf /tmp/backup_$date/lib64_backup.tar.gz /lib64 > /dev/null 2>&1  
  145. tar czf /tmp/backup_$date/usr_lib64_backup.tar.gz /usr/lib64 > /dev/null 2>&1  
  146. else  
  147. ls -lhR /lib > /tmp/backup_$date/old_lib_list.txt  
  148. ls -lhR /usr/lib > /tmp/backup_$date/old_usr_lib_list.txt  
  149. tar czf /tmp/backup_$date/lib_backup.tar.gz /lib > /dev/null 2>&1  
  150. tar czf /tmp/backup_$date/usr_lib_backup.tar.gz /usr/lib > /dev/null 2>&1  
  151. fi  
  152.   
  153. #备份旧版本openssl  
  154. if  [ $openssl_rpm_status != 0 ];then  
  155. rpm -ql `rpm -qa | egrep openssl` > /tmp/backup_$date/old_openssl_list.txt  
  156. tar czf /tmp/backup_$date/openssl_backup.tar.gz -T /tmp/backup_$date/old_openssl_list.txt > /dev/null 2>&1  
  157. else  
  158. find / -name *ssl* > /tmp/backup_$date/old_openssl_list.txt  
  159. tar czf /tmp/backup_$date/openssl_backup.tar.gz -T /tmp/backup_$date/old_openssl_list.txt > /dev/null 2>&1  
  160. fi  
  161.   
  162. #备份旧版本openssh  
  163. if [ $openssh_rpm_status != 0 ];then  
  164. rpm -ql `rpm -qa | egrep openssh` > /tmp/backup_$date/old_openssh_list.txt  
  165. tar czf /tmp/backup_$date/openssh_backup.tar.gz -T /tmp/backup_$date/old_openssh_list.txt > /dev/null 2>&1  
  166. else  
  167. find / -name *ssh* > /tmp/backup_$date/old_openssh_list.txt  
  168. tar czf /tmp/backup_$date/openssh_backup.tar.gz -T /tmp/backup_$date/old_openssh_list.txt > /dev/null 2>&1  
  169. fi  
  170.   
  171. #检查备份结果  
  172. if [ $(getconf WORD_BIT) == 32 ] && [ $(getconf LONG_BIT) == 64 ] && [ -e /tmp/backup_$date/lib_backup.tar.gz ] && [ -e /tmp/backup_$date/usr_lib_backup.tar.gz ]&& [ -e /tmp/backup_$date/lib64_backup.tar.gz ] && [ -e /tmp/backup_$date/usr_lib64_backup.tar.gz ] && [ -e /tmp/backup_$date/openssl_backup.tar.gz ] && [ -e /tmp/backup_$date/openssh_backup.tar.gz ];then  
  173. echo -e "备份旧版本程序成功" "\033[32m Success\033[0m"  
  174. fi  
  175. if [ $(getconf WORD_BIT) == 32 ] && [ $(getconf LONG_BIT) == 32 ] && [ -e /tmp/backup_$date/lib_backup.tar.gz ] && [ -e /tmp/backup_$date/usr_lib_backup.tar.gz ] && [ -e /tmp/backup_$date/openssl_backup.tar.gz ] && [ -e /tmp/backup_$date/openssh_backup.tar.gz ];then  
  176. echo -e "备份旧版本程序成功" "\033[32m Success\033[0m"  
  177. fi  
  178. echo ""  
  179.   
  180. #卸载旧版本openssl  
  181. if [ -e /usr/bin/openssl ];then  
  182. mv /usr/bin/openssl /usr/bin/openssl.bak_$date  
  183. fi  
  184. if [ -e /usr/lib/openssl ];then  
  185. mv /usr/lib/openssl /usr/lib/openssl.bak_$date  
  186. fi  
  187. if [ -e /usr/lib64/openssl ];then  
  188. mv /usr/lib64/openssl /usr/lib64/openssl.bak_$date  
  189. fi  
  190.   
  191. #卸载旧版本openssh  
  192. if  [ $openssh_rpm_status != 0 ];then  
  193. rpm -e `rpm -qa | grep openssh` --nodeps  --allmatches > /dev/null 2>&1  
  194. else  
  195. mv /usr/bin/scp /usr/bin/scp.bak_$date > /dev/null 2>&1  
  196. mv /usr/bin/sftp /usr/bin/sftp.bak_$date > /dev/null 2>&1  
  197. mv /usr/bin/ssh /usr/bin/ssh.bak_$date > /dev/null 2>&1  
  198. mv /usr/bin/ssh-keyscan /usr/bin/ssh-keyscan.bak_$date > /dev/null 2>&1  
  199. mv /usr/bin/ssh-add /usr/bin/ssh-add.bak_$date > /dev/null 2>&1  
  200. mv /usr/bin/ssh-keygen /usr/bin/ssh-keygen.bak_$date > /dev/null 2>&1  
  201. mv /usr/bin/ssh-agent /usr/bin/ssh-agent.bak_$date > /dev/null 2>&1  
  202. mv /usr/libexec/ssh-pkcs11-helper /usr/libexec/ssh-pkcs11-helper.bak_$date > /dev/null 2>&1  
  203. mv /usr/libexec/ssh-keysign /usr/libexec/ssh-keysign.bak_$date > /dev/null 2>&1  
  204. mv /usr/libexec/sftp-server /usr/libexec/sftp-server.bak_$date > /dev/null 2>&1  
  205. mv /usr/sbin/sshd /usr/sbin/sshd.bak_$date > /dev/null 2>&1  
  206. mv /etc/ssh /etc/ssh.bak_$date > /dev/null 2>&1  
  207. mv /etc/init.d/sshd /etc/init.d/sshd.bak_$date > /dev/null 2>&1  
  208. fi  
  209.   
  210. #检查卸载结果  
  211. if [ $openssh_rpm_status != 0 ] && [ -e /usr/bin/openssl ];then  
  212. echo -e "卸载旧版本程序失败" "\033[31m Failure\033[0m"  
  213. else  
  214. echo -e "卸载旧版本程序成功" "\033[32m Success\033[0m"  
  215. fi  
  216. echo ""  
  217.   
  218. #编译安装OpenSSL  
  219. cd /tmp  
  220. tar xzf $openssl_version.tar.gz  
  221. cd $openssl_version  
  222. ./config -fPIC --prefix=/usr enable-shared > /dev/null 2>&1  
  223. if [ $? -eq 0 ];then  
  224. make > /dev/null 2>&1  
  225. make install > /dev/null 2>&1  
  226. else  
  227. echo -e "编译安装OpenSSL失败,五秒后自动退出脚本" "\033[31m Failure\033[0m"  
  228. echo ""  
  229. sleep 5  
  230. exit  
  231. fi  
  232.   
  233. if [ -e /usr/bin/openssl ];then  
  234. echo -e "编译安装OpenSSL成功" "\033[32m Success\033[0m"  
  235. fi  
  236. echo ""  
  237.   
  238. #编译安装OpenSSH  
  239. cd /tmp  
  240. tar xzf $openssh_version.tar.gz    
  241. cd $openssh_version  
  242. ./configure --prefix=/usr --sysconfdir=/etc/ssh --with-pam --with-zlib > /dev/null 2>&1  
  243. if [ $? -eq 0 ];then  
  244. make > /dev/null 2>&1  
  245. make install > /dev/null 2>&1  
  246. else  
  247. echo -e "编译安装OpenSSH失败,五秒后自动退出脚本" "\033[31m Failure\033[0m"  
  248. echo ""  
  249. sleep 5  
  250. exit  
  251. fi  
  252.   
  253. if [ -e /usr/sbin/sshd ];then  
  254. echo -e "编译安装OpenSSH成功" "\033[32m Success\033[0m"  
  255. fi  
  256. echo ""  
  257.   
  258. #启动OpenSSH  
  259. cp -rf /tmp/$openssh_version/contrib/redhat/sshd.init /etc/init.d/sshd  
  260. cp -rf /tmp/$openssh_version/contrib/redhat/sshd.pam /etc/pam.d/sshd  
  261. chmod +x /etc/init.d/sshd  
  262. chkconfig --add sshd  
  263. sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config  
  264. if [ $rhel7_version == 1 ];then  
  265. chmod 600 /etc/ssh/ssh_host_rsa_key  
  266. chmod 600 /etc/ssh/ssh_host_ecdsa_key  
  267. chmod 600 /etc/ssh/ssh_host_ed25519_key  
  268. fi  
  269. service sshd start > /dev/null 2>&1  
  270. if [ $openssh_running_status != 0 ];then  
  271. echo -e "启动OpenSSH服务成功" "\033[32m Success\033[0m"  
  272. else  
  273. echo -e "启动OpenSSH服务失败,五秒后自动退出脚本" "\033[31m Failure\033[0m"  
  274. sleep 5  
  275. exit  
  276. fi  
  277. echo ""  
  278.   
  279. #删除软件源码包  
  280. rm -rf /tmp/$openssh_version*  
  281. rm -rf /tmp/$openssl_version*  
  282. rm -rf /tmp/$zlib_version*  
  283. rm -rf /tmp/$dropbear_version*  
  284. if [ -e /tmp/$openssh_version ] && [ -e /tmp/$openssl_version ] && [ -e /tmp/$openssl_version ] && [ -e /tmp/$zlib_version ] && [ -e /tmp/$openssh_version.tar.gz ] && [ -e /tmp/$openssl_version.tar.gz ] && [ -e /tmp/$zlib_version.tar.gz ] && [ -e /tmp/$dropbear_version.tar.gz ];then  
  285. echo -e "删除软件源码包失败" "\033[31m Failure\033[0m"  
  286. else  
  287. echo -e "删除软件源码包成功" "\033[32m Success\033[0m"  
  288. fi  
  289. echo ""  
  290.   
  291. #升级完成  
  292. echo -e "\033[33mOpenSSH、OpenSSL升级成功,软件版本如下:\033[0m"  
  293. echo ""  
  294. openssl version  
  295. echo ""  
  296. ssh -V  
  297. echo ""  
  298.   
  299. #卸载telnet  
  300. if [ $rhel4_version == 1 ] || [ $rhel5_version = 1 ];then  
  301. echo -e "\033[33m为防止OpenSSH升级失败导致无法远程登录,脚本已临时安装Telnet\033[0m"  
  302. echo ""  
  303. echo -e "\033[33mOpenSSH升级完成后,建议登录测试,确保没有问题后可卸载Telnet\033[0m"  
  304. echo ""  
  305. echo "1: 卸载Telnet"  
  306. echo ""  
  307. echo "2: 退出脚本"  
  308. echo ""  
  309. read -p  "请输入对应数字后按回车键: " uninstall  
  310. if [ $uninstall == 1 ];then  
  311. clear  
  312. yum -y remove telnet-server > /dev/null 2>&1  
  313. service xinetd stop > /dev/null 2>&1  
  314. mv /etc/securetty.bak /etc/securetty  
  315. echo -e "卸载Telnet成功" "\033[32m Success\033[0m"  
  316. else  
  317. exit  
  318. fi  
  319. fi  
  320.   
  321. #卸载dropbear  
  322. if [ $rhel6_version == 1 ] || [ $rhel7_version == 1 ];then  
  323. echo -e "\033[33m为防止OpenSSH升级失败导致无法远程登录,脚本已临时安装DropBear\033[0m"  
  324. echo ""  
  325. echo -e "\033[33mOpenSSH升级完成后,建议登录测试,确保没有问题后可卸载DropBear\033[0m"  
  326. echo ""  
  327. echo "1: 卸载DropBear"  
  328. echo ""  
  329. echo "2: 退出脚本"  
  330. echo ""  
  331. read -p  "请输入对应数字后按回车键: " uninstall  
  332. if [ $uninstall == 1 ];then  
  333. clear  
  334. ps aux | grep dropbear | grep -v grep | awk '{print $2}' | xargs kill -9  
  335. find /usr/local/ -name dropbear* | xargs rm -rf  
  336. rm -rf /etc/dropbear  
  337. rm -rf /var/run/dropbear.pid  
  338. echo -e "卸载DropBear成功" "\033[32m Success\033[0m"  
  339. fi  
  340. fi  
  341. echo ""  
  342. }  
  343. ####### 升级软件 #######  
  344.   
  345. ####### 脚本菜单 #######  
  346. echo -e "\033[36m1: 升级软件\033[0m"  
  347. echo ""  
  348. echo -e "\033[36m2: 退出脚本\033[0m"  
  349. echo ""  
  350. read -p  "请输入对应数字后按回车开始执行脚本: " install  
  351. if [ "$install" == "1" ];then  
  352. clear  
  353. update  
  354. else  
  355. clear  
  356. exit  
  357. fi  
  358. ####### 脚本菜单 #######  
  • 微信赞助网站
  • weinxin
  • 支付宝赞助网站
  • weinxin

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

目前评论:14   其中:访客  7   博主  7

    • 11111111 浙江省温州市 电信

      开始升级OpenSSL、OpenSSH

      tar (child): dropbear-2018.76.tar.bz2: Cannot open: No such file or directory
      tar (child): Error is not recoverable: exiting now
      tar: Child returned status 2
      tar: Error is not recoverable: exiting now
      解压软件源码包失败,五秒后自动退出脚本 Failure

        • 王花郎 站长 广东省韶关市 电信

          @11111111 dropbear软件官网估计是在维护,导致无法正常下载dropbear-2018.76.tar.bz2到本地。
          ~
          解决方案,二选一即可:
          1.等待dropbear软件官网恢复正常,稍后再执行脚本;
          2.修改脚本第14行,把文件链接修改为:https://download.wanghualang.com/dropbear-2018.76.tar.bz2

            • 11111111 浙江省温州市 电信

              @王花郎 开始升级OpenSSL、OpenSSH

              解压软件源码包成功 Success

              安装软件依赖包成功 Success

              启动DropBear服务成功 Success

              备份旧版本程序成功 Success

              卸载旧版本程序成功 Success

              编译安装OpenSSL成功 Success

              编译安装OpenSSH失败,五秒后自动退出脚本 Failure

                • 王花郎 站长 广东省韶关市 电信

                  @11111111 进入OpenSSH源码目录,执行下面的命令,看看报什么错误?
                  ./configure –prefix=/usr –sysconfdir=/etc/ssh –with-pam –with-zlib –with-md5-passwords –with-ssl-engine –disable-etc-default-login

                    • 11111111 浙江省温州市 电信

                      @王花郎 下面
                      configure: WARNING: you should use –build, –host, –target
                      configure: WARNING: invalid host type: –with-pam
                      configure: WARNING: you should use –build, –host, –target
                      configure: WARNING: invalid host type: –with-zlib
                      configure: WARNING: you should use –build, –host, –target
                      configure: WARNING: invalid host type: –with-md5-passwords
                      configure: WARNING: you should use –build, –host, –target
                      configure: WARNING: invalid host type: –with-ssl-engine
                      configure: WARNING: you should use –build, –host, –target
                      configure: WARNING: invalid host type: –disable-etc-default-login
                      checking for –with-pam-gcc… no
                      checking for gcc… gcc
                      checking whether the C compiler works… yes
                      checking for C compiler default output file name… a.out
                      checking for suffix of executables…
                      checking whether we are cross compiling… no
                      checking for suffix of object files… o
                      checking whether we are using the GNU C compiler… yes
                      checking whether gcc accepts -g… yes
                      checking for gcc option to accept ISO C89… none needed
                      checking build system type… Invalid configuration `–with-pam’: machine `–with’ not recognized
                      configure: error: /bin/sh ./config.sub –with-pam failed

                        • 王花郎 站长 广东省韶关市 电信

                          @11111111 确保终端是英文输入法状态,尝试手动输入一次配置命令,不要复制,注意空格:
                          ./configure –prefix=/usr –sysconfdir=/etc/ssh –with-pam –with-zlib –with-md5-passwords –with-ssl-engine –disable-etc-default-login

                • xyz 江苏省扬州市 移动

                  用的是CentOS 7.5,可以正常安装成功。正常显示了安装的版本(默认),但在用Putty连接时,提示拒绝访问?请问是什么原因。

                    • 王花郎 站长 广东省韶关市 电信

                      @xyz 确保SElinux已禁用,接着再尝试手动执行:
                      chmod 600 /etc/ssh/ssh_host_rsa_key
                      chmod 600 /etc/ssh/ssh_host_ecdsa_key
                      chmod 600 /etc/ssh/ssh_host_ed25519_key

                        • xyz 江苏省扬州市 移动

                          @王花郎 OK了,应该是SELinux的问题。原来没有关闭。谢谢。
                          不过,关闭这个完全性也是一个挑战哦。

                            • 王花郎 站长 广东省韶关市 电信

                              @xyz SElinux要摸熟有点难度呢,反正我是玩不转。

                        • 13122024 广东省惠州市 电信

                          同样也是在安装的时候出错,提示的是找不到configure文件或目录

                            • 王花郎 站长 广东省深圳市 电信

                              @13122024 这个提示是什么阶段出现的?如果是在“安装软件依赖包”阶段出现的,你检查一下zlib源码包是否下载到/tmp目录了?使用脚本要确保网络通畅,能正常访问外网。

                            • OpenSSH 浙江省温州市 电信

                              使用脚本 centos6.9 OpenSSH 5.3版本 升级 失败
                              编译安装OpenSSL成功 Success

                              编译安装OpenSSH失败,五秒后自动退出脚本 Failure

                                • 王花郎 站长 广东省韶关市 电信

                                  @OpenSSH 手动进入SSH源码目录,执行./configure –prefix=/usr –sysconfdir=/etc/ssh –with-pam –with-zlib –with-md5-passwords –with-ssl-engine –disable-etc-default-login,看看报什么错。