首页 > 热门 > 竖图列表

通过源码包安装方式升级OpenSSH

竖图列表会员昵称: 印修关注投稿量:粉丝量:关注量:   2024-10-23 19:45:31A+A-

通过源码包安装方式升级OpenSSH


1. 1 源码安装

1.1 1.1 下载源码

地址:http://www.openssh.com/portable.html

通过源码包安装方式升级OpenSSH(pic1)

选择一个镜像,下载到本地目录,例如/root

1
$ wget https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-8.6p1.tar.gz

解压缩

1
$ tar xvf openssh-8.6p1.tar.gz

检查环境,如果有部分依赖包没有安装,系统会逐个提示。

相关依赖其实在INSTALL文件中已经注明。

1
$ ./configure

注意:

请充分阅读INSTALL文件

例如:

  1. Prerequisites

A C compiler. Any C89 or better compiler should work. Where supported,configure will attempt to enable the compiler’s run-time integrity checkingoptions. Some notes about specific compilers:

  • clang: -ftrapv and -sanitize=integer require the compiler-rt runtime(CC=clang LDFLAGS=–rtlib=compiler-rt ./configure)

To support Privilege Separation (which is now required) you will needto create the user, group and directory used by sshd for privilegeseparation. See README.privsep for details.

The remaining items are optional.

A working installation of zlib:Zlib 1.1.4 or 1.2.1.2 or greater (earlier 1.2.x versions have problems):http://www.gzip.org/zlib/

libcrypto from either of LibreSSL or OpenSSL. Building without libcryptois supported but severely restricts the available ciphers and algorithms.

  • LibreSSL (https://www.libressl.org/)
  • OpenSSL (https://www.openssl.org) with any of the following versions:
    • 1.0.x >= 1.0.1 or 1.1.0 >= 1.1.0g or any 1.1.1

Note that due to a bug in EVP_CipherInit OpenSSL 1.1 versions prior to1.1.0g can’t be used.

1.2 1.2 安装相关依赖

如果需要,根据提示安装相关依赖。如果不需要,可掠过。

12
$ yum -y group install "Development Tools"$ yum -y install openssl-devel

其中libcrypto没有的话,系统会进行提示

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

安装libcrypto依赖。

1
$ yum install -y openssl-devel

继续执行环境检查,检查完会提示相关信息

123456789
OpenSSH has been configured with the following options:                     User binaries: /usr/local/bin                   System binaries: /usr/local/sbin               Configuration files: /usr/local/etc                   Askpass program: /usr/local/libexec/ssh-askpass                      Manual pages: /usr/local/share/man/manX                          PID file: /var/run  Privilege separation chroot path: /var/empty            sshd default user PATH: /usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin

注意看默认的二进制文件、配置文件的安装路径均是/usr/local/

1.3 1.3 编译

利用make命令进行编译,这个会花一定的时间。【需要在openssh的源码路径下执行】

1
$ make

1.4 1.4 安装

12345678910111213141516
$ make installmake install(cd openbsd-compat && make)make[1]: Entering directory '/root/openssh-8.6p1/openbsd-compat'make[1]: Nothing to be done for 'all'.make[1]: Leaving directory '/root/openssh-8.6p1/openbsd-compat'/usr/bin/mkdir -p /usr/local/bin/usr/bin/mkdir -p /usr/local/sbin/usr/bin/mkdir -p /usr/local/share/man/man1/usr/bin/mkdir -p /usr/local/share/man/man5/usr/bin/mkdir -p /usr/local/share/man/man8//此处省略部分/usr/bin/mkdir -p /usr/local/etcssh-keygen: generating new host keys: RSA DSA ECDSA ED25519/usr/local/sbin/sshd -t -f /usr/local/etc/sshd_config

可以从上述内容中,看到部分反馈。

2. 2 配置

2.1 2.1 注意事项:源码安装后路径变化

注意看系统自带的openssh版本号和安装相关路径

12345678910
$ which sshd/usr/sbin/sshd$ /usr/sbin/sshd -Vunknown option -- VOpenSSH_8.0p1, OpenSSL 1.1.1g FIPS  21 Apr 2020$ sshd -v unknown option -- vOpenSSH_8.6p1, OpenSSL 1.1.1g FIPS  21 Apr 2020

可以看出来自带的openssh版本是8.0,安装路径位于/usr/sbin/下,配置文件的路径为/etc/ssh

千万注意系统自带的openssh和源码安装路径

而用源码包安装后的路径,在用make install安装完毕后,系统已经提示。

123456789
OpenSSH has been configured with the following options:                     User binaries: /usr/local/bin                   System binaries: /usr/local/sbin               Configuration files: /usr/local/etc                   Askpass program: /usr/local/libexec/ssh-askpass                      Manual pages: /usr/local/share/man/manX                          PID file: /var/run  Privilege separation chroot path: /var/empty            sshd default user PATH: /usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin

2.2 2.1 系统自带systemd配置文件

系统自带的systemd配置文件如下【切勿直接用,只是表示系统自带的内容】

1234567891011121314151617181920
cat > /usr/lib/systemd/system/sshd.serviceEOF[Unit]Description=OpenSSH server daemonDocumentation=man:sshd(8) man:sshd_config(5)After=network.target sshd-keygen.targetWants=sshd-keygen.target[Service]Type=notifyEnvironmentFile=-/etc/crypto-policies/back-ends/opensshserver.configEnvironmentFile=-/etc/sysconfig/sshdExecStart=/usr/sbin/sshd -D $OPTIONS $CRYPTO_POLICYExecReload=/bin/kill -HUP $MAINPIDKillMode=processRestart=on-failureRestartSec=42s[Install]WantedBy=multi-user.targetEOF

我们首先备份原有systemd配置文件

123456
$ cp /usr/lib/systemd/system/sshd.service{,.bak}# 验证$ ll /usr/lib/systemd/system/sshd.service*-rw-r--r--. 1 root root 456 Mar 27  2020 /usr/lib/systemd/system/sshd.service-rw-r--r--. 1 root root 456 Jul  7 17:32 /usr/lib/systemd/system/sshd.service.bak

2.3 2.2 关闭系统自带SSHD服务

关闭当前SSHD服务,注意关闭当前SSHD服务,并不会影响当前的这次SSH连接。

1
$ systemctl disable sshd --now

2.4 2.3 修改systemd配置文件

【2.2 关闭系统自带SSHD服务】的步骤需要在修改systemd配置文件前操作。

12345678910
cat >/usr/lib/systemd/system/sshd.service EOF[Unit]Description=OpenSSH server daemon[Service]ExecStart=/usr/local/sbin/sshd -f /usr/local/etc/sshd_config -DExecReload=/bin/kill -HUP $MAINPIDKillMode=process[Install]WantedBy=multi-user.targetEOF

2.5 2.4 启用源码包安装的sshd服务

注意,由于新添加了systemd配置文件,需要重新加载【这步操作不要遗忘】

1
$ systemctl daemon-reload

此时可以正常利用systemctl启动服务

1
$ systemctl enable sshd --now

验证

1234567891011121314151617
$ systemctl status sshd● sshd.service - OpenSSH server daemon   Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled; vendor preset: enabled)   Active: active (running) since Fri 2021-07-09 09:26:11 CST; 5h 47min ago Main PID: 32016 (sshd)    Tasks: 9 (limit: 102314)   Memory: 9.6M   CGroup: /system.slice/sshd.service           ├─32016 sshd: /usr/local/sbin/sshd -f /usr/local/etc/sshd_config -D [listener] 0 of 10-100 startups           ├─32379 sshd: root@pts/0           ├─32381 -bash           ├─32432 sshd: root@pts/1           ├─32434 -bash           ├─32483 sshd: root@pts/2           ├─32485 -bash           ├─32506 systemctl status sshd           └─32507 less

2.6 2.5 扩展的问题处理

我们退出当前ssh连接后,再次通过ssh当前服务器时候,会出现以下错误

1234567891011121314
$ ssh root@172.18.3.101        @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!Someone could be eavesdropping on you right now (man-in-the-middle attack)!It is also possible that a host key has just been changed.The fingerprint for the ECDSA key sent by the remote host isSHA256:7rDy6I415OgpBDpsf92hL1gsBWZIsqBNV9uOulQsbsU.Please contact your system administrator.Add correct host key in /Users/zhangcheng/.ssh/known_hosts to get rid of this message.Offending ECDSA key in /Users/zhangcheng/.ssh/known_hosts:28ECDSA host key for 172.18.3.101 has changed and you have requested strict checking.Host key verification failed.

原因:因为原来服务器SSHD服务的SHA256指纹发生了改变。

扩展知识

当服务器在收到SSH客户端连接请求时候,会将公钥提供给客户端用于身份认证。

源码包安装的服务器秘钥文件,其中.pub为一对非对称秘钥的公钥

123456789101112
ll /etc/ssh/total 600-rw-r--r--. 1 root root     577388 Mar 27  2020 moduli-rw-r--r--. 1 root root       1770 Mar 27  2020 ssh_configdrwxr-xr-x. 2 root root         28 Jul  7 08:09 ssh_config.d-rw-------. 1 root root       4269 Mar 27  2020 sshd_config-rw-r-----. 1 root ssh_keys    492 Jul  7 08:13 ssh_host_ecdsa_key-rw-r--r--. 1 root root        162 Jul  7 08:13 ssh_host_ecdsa_key.pub-rw-r-----. 1 root ssh_keys    387 Jul  7 08:13 ssh_host_ed25519_key-rw-r--r--. 1 root root         82 Jul  7 08:13 ssh_host_ed25519_key.pub-rw-r-----. 1 root ssh_keys   2578 Jul  7 08:14 ssh_host_rsa_key-rw-r--r--. 1 root root        554 Jul  7 08:14 ssh_host_rsa_key.pub

源码包安装的服务器秘钥文件

1234567891011
ll  /usr/local/etc/s*-rw-r--r--. 1 root root 1531 Jul  7 13:10 /usr/local/etc/ssh_config-rw-r--r--. 1 root root 3167 Jul  7 13:10 /usr/local/etc/sshd_config-rw-------. 1 root root 1393 Jul  7 13:10 /usr/local/etc/ssh_host_dsa_key-rw-r--r--. 1 root root  613 Jul  7 13:10 /usr/local/etc/ssh_host_dsa_key.pub-rw-------. 1 root root  513 Jul  7 13:10 /usr/local/etc/ssh_host_ecdsa_key-rw-r--r--. 1 root root  185 Jul  7 13:10 /usr/local/etc/ssh_host_ecdsa_key.pub-rw-------. 1 root root  419 Jul  7 13:10 /usr/local/etc/ssh_host_ed25519_key-rw-r--r--. 1 root root  105 Jul  7 13:10 /usr/local/etc/ssh_host_ed25519_key.pub-rw-------. 1 root root 2610 Jul  7 13:10 /usr/local/etc/ssh_host_rsa_key-rw-r--r--. 1 root root  577 Jul  7 13:10 /usr/local/etc/ssh_host_rsa_key.pub

【解决办法】

我们将个人账户家目录下的.ssh/known_hosts文件,将对应服务器地址的记录删除后,重新登录。

再次访问,提示将指纹添加到.ssh/known_hosts文件,正常访问。

123456
$ ssh root@172.18.3.101    The authenticity of host '172.18.3.101 (172.18.3.101)' can't be established.ECDSA key fingerprint is SHA256:7rDy6I415OgpBDpsf92hL1gsBWZIsqBNV9uOulQsbsU.Are you sure you want to continue connecting (yes/no/[fingerprint])? yesWarning: Permanently added '172.18.3.101' (ECDSA) to the list of known hosts.Last login: Fri Jul  9 09:15:06 2021 from 172.17.51.6

【验证公钥】

我们在服务器端打开ssh_host_ecdsa_key.pub,查看其中的公钥内容。

12
cat ssh_host_ecdsa_key.pubecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBNRe043PUtSi7G3y5nqP25ys1hgfaarpy/V1+HM3BRgkys7yJurwB0bb+fIuY6jCr4ZD6PIhbJB2ZInJzwH2ufw= root@redhat8.4-template

打开客户端.ssh/known_hosts文件,该服务器对应的指纹和服务器端ssh_host_ecdsa_key.pub

实际上客户端.ssh/known_hosts文件就是保存着服务器非对称加密套件所对应的公钥内容。

12
$ cat ~/.ssh/known_hosts172.18.3.101 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBNRe043PUtSi7G3y5nqP25ys1hgfaarpy/V1+HM3BRgkys7yJurwB0bb+fIuY6jCr4ZD6PIhbJB2ZInJzwH2ufw=

3. 3 其它

2021年8月25日,按照本文操作可以直接将openssh8.6升级到了8.7。

提示:在享受本文内容的同时,请注意版权归属 徐州鑫坤机电设备有限公司https://www.xzxkjd.com如果您觉得有价值欢迎分享但请务必注明出处,感谢您的理解,谢谢

以下部分内容需要登录查看 立即登录

点击这里复制本文地址 以上内容由用户上传和网络在徐州鑫坤机电设备有限公司整理呈现,如有侵权请联系站长:xzxkjd@qq.com !

1. 本网站可能包含第三方链接,请注意甄别,我们不对其内容负责。

2. 请遵守网络法律法规,在浏览网站时,不传播违法、不良信息,共同维护网络健康。否则后果自负!

3. 本网站内容受版权保护,未经许可,严禁转载!

4. 长时间浏览网站请注意适时休息,保护眼睛,保持身心健康。

5. 在浏览网站过程中,如有任何疑问或需要帮助,请随时联系我们的客服团队。

6. 如有好的内容可投稿申请发布我们收到会第一时间审核发布。

7. 请注意系统即将进行维护可能会影响部分功能的正常使用请提前规划好您的浏览时间,感谢您的理解,享受每一次在线体验

相关内容

加载中~

Copyright ©2012-2024徐州鑫坤机电设备有限公司版权所有
苏ICP备2023032739号-1ICP备2023032739号-2苏ICP备2023032739号-3X
苏公网安备 32038202000884号增值电信业务经营许可证:合字B1-20235517
开发中| 关键词| 网站地图| 网站地图| 网站地图| TAG集合

今日IP人数0今日浏览量(PV)0昨日IP人数0昨日浏览量(PV)07天IP人数07天浏览量(PV)0

网站已运行:

在线客服
服务热线

服务热线

0516-86596070

联系邮箱

服务热线

xzxkjd.@qq.com

微信咨询
我的网站名称
我的网站名称
交流群
返回顶部
X我的网站名称

截屏,微信识别二维码

微信号:鑫坤机电设备

(点击微信号复制,添加好友)

  打开微信

微信号已复制,请打开微信添加咨询详情!