本文的環境都是系統自帶的openssh,如果手動編譯安裝的,不保證成功。如果自帶的,則升級過程當中不須要卸載舊版本openssh。linux
安裝以前能夠先試試yum更新,如果能夠更新,就不須要往下看了shell
# centos8 $ yum update openssh -y # 重啓sshd $ systemctl restart sshd
本文選擇的是:
openssh-8.2p1.tar.gz
openssl-1.1.1g.tar.gzvim
$ wget https://openbsd.hk/pub/OpenBSD/OpenSSH/portable/openssh-8.2p1.tar.gz $ wget https://ftp.openssl.org/source/openssl-1.1.1g.tar.gz
安裝新的ssh以後,只要配置好啓動,就能夠作到無縫切換,可是中途斷開就不能鏈接了,爲了防止這種狀況,咱們能夠安裝telnet看成備用,如果你能保證中途不會斷開,此步驟能夠忽略centos
1.安裝ssh
$ yum install telnet telnet-server -y
2.啓動socket
$ systemctl enable telnet.socket $ systemctl start telnet.socket
3.鏈接測試
# telnet 默認禁止root用戶鏈接,咱們先生成一個普通用戶 $ useradd testuser $ passwd testuser # 本地測試 $ telnet 127.0.0.1 VM_0_6_centos login: testuser Password: [testuser@VM_0_6_centos ~]$ # 切換root [testuser@VM_0_6_centos ~]$ su
$ mv /usr/bin/openssl /usr/bin/openssl_old
$ tar xzvf openssl-1.1.1g.tar.gz $ cd openssl-1.1.1g/ $ ./config shared && make && make install
$ ln -s /usr/local/bin/openssl /usr/bin/openssl
若是執行openssl version
報下面的錯誤rest
openssl: error while loading shared libraries: libssl.so.1.1: cannot open shared object file: No such file or directory
則執行下面命令解決:code
$ ln -s /usr/local/lib64/libssl.so.1.1 /usr/lib64/ $ ln -s /usr/local/lib64/libcrypto.so.1.1 /usr/lib64/
舊版本:server
$ openssl_old version OpenSSL 1.0.2k-fips 26 Jan 2017
$ yum install zlib-devel openssl-devel pam-devel -y
$ mkdir /etc/ssh_old $ mv /etc/ssh/* /etc/ssh_old/
$ tar xzvf openssh-8.2p1.tar.gz $ cd openssh-8.2p1/ $ ./configure --prefix=/usr/ --sysconfdir=/etc/ssh --with-ssl-dir=/usr/local/lib64/ --with-zlib --with-pam --with-md5-password --with-ssl-engine --with-selinux # 安裝 $ make && make install # 驗證 $ ssh -V OpenSSH_8.2p1, OpenSSL 1.1.1g 21 Apr 2020 $ ls /etc/ssh moduli ssh_config sshd_config ssh_host_dsa_key ssh_host_dsa_key.pub ssh_host_ecdsa_key ssh_host_ecdsa_key.pub ssh_host_ed25519_key ssh_host_ed25519_key.pub ssh_host_rsa_key ssh_host_rsa_key.pub
1.修改sshd_config
$ vim /etc/ssh/sshd_config # 例子:配置root登陸, 根據你之前的配置來 PermitRootLogin yes
2.啓動
# 移走之前的ssh服務, 防止與新的衝突 $ mv /usr/lib/systemd/system/sshd.service /etc/ssh_old/sshd.service $ mv /usr/lib/systemd/system/sshd.socket /etc/ssh_old/sshd.socket # 在解壓包中拷貝一些文件 $ cp -a contrib/redhat/sshd.init /etc/init.d/sshd # 從新啓動 $ /etc/init.d/sshd restart $ systemctl daemon-reload # 添加自啓動 $ chkconfig --add sshd $ chkconfig sshd on