IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> Ubuntu14.04.2升级OpenSSH -> 正文阅读

[系统运维]Ubuntu14.04.2升级OpenSSH

安装依赖

apt -y install gcc g++ make openssl libssl-dev libpam0g-dev

# ubuntu上的zlib1g zlib1g-dev就相当于centos上的zlib和zlib-devel

# 这里之所以没有安装 zlib,是因为apt安装的zlib在编译安装openssh时并不可用会报错:

checking zlib.h usability... no
checking zlib.h presence... yes
configure: WARNING: zlib.h: present but cannot be compiled
configure: WARNING: zlib.h: ? ? check for missing prerequisite headers?
configure: WARNING: zlib.h: see the Autoconf documentation
configure: WARNING: zlib.h: ? ? section "Present But Cannot Be Compiled"
configure: WARNING: zlib.h: proceeding with the compiler's result
configure: WARNING: ? ? ## ------------------------------------------- ##
configure: WARNING: ? ? ## Report this to openssh-unix-dev@mindrot.org ##
configure: WARNING: ? ? ## ------------------------------------------- ##
checking for zlib.h... no
configure: error: *** zlib.h missing - please install first or check config.log ***

编译安装zlib

# 截至2022年5月,最新的zlib是zlib-1.2.12,可以登录到官网查看自己需要的版本
# 编译openssh时需要指定zlib位置:--with-zlib=/usr/local/zlib
wget http://www.zlib.net/zlib-1.2.12.tar.gz
tar zxvf zlib-1.2.12.tar.gz 
cd zlib-1.2.12/
./configure --prefix=/usr/local/zlib
sudo make && make install

编译安装OpenSSL

目前,openssl被维护了两个版本1.1.1和3.0。这里,选择1.1.1o

  • 注意: 最新的稳定版本是3.0系列。1.1.1系列是我们的长期支持(LTS)版本,支持到2023年9月11日。所有旧版本(包括1.1.0、1.0.2、1.0.0和0.9.8)现在都不支持,不应该使用。这些旧版本的用户被鼓励尽快升级到3.0或1.1.1。对1.0.2的扩展支持可以访问该版本的安全修复。
  • OpenSSL 3.0是 OpenSSL 的最新主要版本。OpenSSL FIPS 对象模块(FOM)3.0是 OpenSSL 3.0下载的集成部分。您不需要单独下载3.0 FOM。请参考下载内部的安装说明,并使用“ enable-fips”编译时配置选项来构建它。
  • OpenSSL 3.0 系列的变化首先体现在许可证方面:之前的版本(例如:1.1.1系列)使用 OpenSSL 和 SSLeay 双重许可证;OpenSSL 3.0.0版本开始,转而使用 Apache v2 许可证
wget https://github.com/openssl/openssl/archive/refs/tags/OpenSSL_1_1_1o.tar.gz
tar zxvf OpenSSL_1_1_1o.tar.gz 
cd openssl-OpenSSL_1_1_1o/
./config --prefix=/usr/local/openssl
make depend
make tests
make && make install
#检查函数库,通过检查确认缺少的函数库
ldd /usr/local/openssl/bin/openssl
#添加所缺函数库
echo "/usr/local/openssl/lib" >> /etc/ld.so.conf
ldconfig -v #更新函数库
/usr/local/openssl/bin/openssl version #查看新安装的版本
#查看旧版本openssl命令在哪里,这里根据实际情况,进行下一步
which openssl
mv /usr/bin/openssl /usr/bin/openssl.old #将旧版本openssl移除
#新版本制作软链接
ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl
openssl version  最后查看版本,更新完毕

编译安装OpenSSH

## 下载openssh tar包
https://mirrors.aliyun.com/pub/OpenBSD/OpenSSH/portable/openssh-9.0p1.tar.gz
## 备份ssh配置目录
mv /etc/ssh{,.bak}
# ubuntu上类似SELinux的是apparmor,所以不要指定--with-selinux
./configure --prefix=/usr/local/openssh --exec-prefix=/usr --sysconfdir=/etc/ssh --with-ssl-dir=/usr/local/openssl --with-md5-passwords --with-pam --mandir=/usr/share/man --with-zlib=/usr/local/zlib --with-privsep-path=/var/lib/sshd --without-hardening
……
PAM is enabled. You may need to install a PAM control file for sshd, otherwise password authentication may fail. 
Example PAM control files can be found in the contrib/ subdirectory

## 这里虽然让用新的pam文件替换掉旧的/etc/pam.d/sshd,但Ubuntu上是不需要替换的。
sudo make && make install
……
make[1]: Entering directory `/opt/openssh-8.6p1/openbsd-compat'
make[1]: Nothing to be done for `all'.
make[1]: Leaving directory `/opt/openssh-8.6p1/openbsd-compat'
/bin/mkdir -p /usr/bin
/bin/mkdir -p /usr/sbin
/bin/mkdir -p /usr/share/man/man1
/bin/mkdir -p /usr/share/man/man5
/bin/mkdir -p /usr/share/man/man8
/bin/mkdir -p /usr/libexec
/bin/mkdir -p -m 0755 /var/lib/sshd
/usr/bin/install -c -m 0755 -s ssh /usr/bin/ssh
/usr/bin/install -c -m 0755 -s scp /usr/bin/scp
/usr/bin/install -c -m 0755 -s ssh-add /usr/bin/ssh-add
/usr/bin/install -c -m 0755 -s ssh-agent /usr/bin/ssh-agent
/usr/bin/install -c -m 0755 -s ssh-keygen /usr/bin/ssh-keygen
/usr/bin/install -c -m 0755 -s ssh-keyscan /usr/bin/ssh-keyscan
/usr/bin/install -c -m 0755 -s sshd /usr/sbin/sshd
/usr/bin/install -c -m 4711 -s ssh-keysign /usr/libexec/ssh-keysign
/usr/bin/install -c -m 0755 -s ssh-pkcs11-helper /usr/libexec/ssh-pkcs11-helper
/usr/bin/install -c -m 0755 -s ssh-sk-helper /usr/libexec/ssh-sk-helper
/usr/bin/install -c -m 0755 -s sftp /usr/bin/sftp
/usr/bin/install -c -m 0755 -s sftp-server /usr/libexec/sftp-server
/usr/bin/install -c -m 644 ssh.1.out /usr/share/man/man1/ssh.1
/usr/bin/install -c -m 644 scp.1.out /usr/share/man/man1/scp.1
/usr/bin/install -c -m 644 ssh-add.1.out /usr/share/man/man1/ssh-add.1
/usr/bin/install -c -m 644 ssh-agent.1.out /usr/share/man/man1/ssh-agent.1
/usr/bin/install -c -m 644 ssh-keygen.1.out /usr/share/man/man1/ssh-keygen.1
/usr/bin/install -c -m 644 ssh-keyscan.1.out /usr/share/man/man1/ssh-keyscan.1
/usr/bin/install -c -m 644 moduli.5.out /usr/share/man/man5/moduli.5
/usr/bin/install -c -m 644 sshd_config.5.out /usr/share/man/man5/sshd_config.5
/usr/bin/install -c -m 644 ssh_config.5.out /usr/share/man/man5/ssh_config.5
/usr/bin/install -c -m 644 sshd.8.out /usr/share/man/man8/sshd.8
/usr/bin/install -c -m 644 sftp.1.out /usr/share/man/man1/sftp.1
/usr/bin/install -c -m 644 sftp-server.8.out /usr/share/man/man8/sftp-server.8
/usr/bin/install -c -m 644 ssh-keysign.8.out /usr/share/man/man8/ssh-keysign.8
/usr/bin/install -c -m 644 ssh-pkcs11-helper.8.out /usr/share/man/man8/ssh-pkcs11-helper.8
/usr/bin/install -c -m 644 ssh-sk-helper.8.out /usr/share/man/man8/ssh-sk-helper.8
/bin/mkdir -p /etc/ssh
ssh-keygen: generating new host keys: RSA DSA ECDSA ED25519 
/usr/sbin/sshd -t -f /etc/ssh/sshd_config
# 修改sshd_config,放开PAM认证
#UsePAM no
UsePAM yes

验证并启动openssh

ssh -V
OpenSSH_8.6p1, OpenSSL 1.1.1o  15 Mar 2022
service ssh restart
service ssh status
ssh start/spawned, process 1268

FAQ

正常情况下,执行完上述步骤之后,一切都OK,但也许会有如下现象:

问题一:公钥认证登录失败

查看/var/log/auth.log发现报错:

userauth_pubkey: signature algorithm ssh-rsa not in PubkeyAcceptedAlgorithms [preauth]

执行如下命令发现是支持ssh-rsa的:

ssh -Q PubkeyAcceptedAlgorithms
ssh-ed25519
ssh-ed25519-cert-v01@openssh.com
sk-ssh-ed25519@openssh.com
sk-ssh-ed25519-cert-v01@openssh.com
ssh-rsa
rsa-sha2-256
rsa-sha2-512
ssh-dss
ecdsa-sha2-nistp256
ecdsa-sha2-nistp384
ecdsa-sha2-nistp521
sk-ecdsa-sha2-nistp256@openssh.com
webauthn-sk-ecdsa-sha2-nistp256@openssh.com
ssh-rsa-cert-v01@openssh.com
rsa-sha2-256-cert-v01@openssh.com
rsa-sha2-512-cert-v01@openssh.com
ssh-dss-cert-v01@openssh.com
ecdsa-sha2-nistp256-cert-v01@openssh.com
ecdsa-sha2-nistp384-cert-v01@openssh.com
ecdsa-sha2-nistp521-cert-v01@openssh.com
sk-ecdsa-sha2-nistp256-cert-v01@openssh.com

应该是openssh默认不支持了,手动修改sshd_config:

PubkeyAcceptedAlgorithms +ssh-rsa

重新加载配置文件:service ssh reload

重新登录,恢复正常。

问题二:openssh升级之后,service ssh restart总卡死,且password认证失败

解决:(未验证到底因为啥恢复正常的)

1、修改/etc/init.d/ssh 将其check_privsep_dir()中的/var/run/sshd修改成/var/lib/sshd,重启服务OK了。

check_privsep_dir() {
? ? # Create the PrivSep empty dir if necessary
? ? if [ ! -d /var/lib/sshd ]; then
? ? ? ? mkdir /var/lib/sshd
? ? ? ? chmod 0755 /var/lib/sshd
? ? fi
}

2、重装了libpam0g-dev

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-06-01 15:29:48  更:2022-06-01 15:32:44 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/30 2:11:27-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码