CentOS7.5 OpenSSHのアップグレード

7076 ワード

じっけんかんきょう

  • OS:CentOS 7.5
  • 現在のopensshバージョン:OpenSSH_7.4p1
  • アップグレード後のopensshバージョン:OpenSSH_8.0p1

  • telnetを開通する


    アップグレード中にsshが切断されないように、念のためtelnetをインストールして起動します.

    telnet-serverおよびtelnetサービスのインストール

    yum install -y telnet-server* telnet

    xinetdサービスのインストール

    yum install -y xinetd

    xinetdおよびtelnetを起動し、起動してから起動します。

    systemctl enable xinetd.service
    systemctl enable telnet.socket
    systemctl start telnet.socket
    systemctl start xinetd.service

    変更/etc/securettyファイル


    デフォルトでは、rootユーザーtelnetのリモートログインは許可されていません.rootユーザーを使用して直接ログインする場合は、/etc/securettyにpts/0などを追加し、次のコマンドを実行します.
    echo 'pts/0' >>/etc/securetty
    echo 'pts/1' >>/etc/securetty
    echo 'pts/2' >>/etc/securetty

    telnetにログインできるかどうかをテストします


    テストはtelnetを通じて正常にホストにログインすることができるかどうかを検査して、起動してから有効になるかどうかを検査します(!!!!生産環境の中で勝手にホストを再起動することができません!!).

    OpenSSHのアップグレード


    デバイスは一般的に外部ネットワークからファイルをダウンロードできず、yumがダウンロードしたopensshバージョンが遅れているため、ダウンロードパッケージでインストールをコンパイルする必要があります.

    元のsshをバックアップ

    cp -r /etc/ssh /etc/ssh.bak`date +%Y%m%d`

    インストールパッケージの準備


    OpenSSH_8.0ダウンロードアドレス:https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-8.0p1.tar.gz

    依存パッケージのダウンロード

    yum install -y gcc zlib zlib-devel openssl-devel

    インストールの解凍

  • インストールパッケージを/usr/local/srcの
  • にアップロード
  • 解凍
  • cd /usr/local/src
    tar -zxvf openssh-8.0p1.tar.gz
  • コンパイルインストール
  • cd openssh-8.0p1/
    #     openssh     
    ./configure --prefix=/usr --sysconfdir=/etc/ssh --with-zlib --without-openssl-header-check --with-ssl-dir=/usr/local/ssl --with-privsep-path=/var/lib/sshd
    make
  • 古いバージョンのmakeをアンインストールして完了した後、make installを急いで実行せず、古いバージョンのopensshをアンインストールします.注意:アンインストール後sshはログインできません.現在の端末を終了しないほうがいいです.そうしないとtelnetログインで構成するしかありません.
  • rpm -e --nodeps `rpm -qa | grep openssh`
  • 実行make install
  • make install
  • エラーまたは警告解決
  • コンパイルインストールレポート依存パケットエラーコンパイルインストール中に依存パケットに関するエラーが発見された場合、yumにより関連依存パケット
  • をインストールする.
  • アラーム情報
  • [root@kvm /usr/local/src/openssh-8.0p1]# systemctl status sshd.service
    ● sshd.service - OpenSSH server daemon
       Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled; vendor preset: enabled)
       Active: activating (auto-restart) (Result: exit-code) since Tue 2019-05-21 00:05:31 CST; 6s ago
         Docs: man:sshd(8)
               man:sshd_config(5)
      Process: 12325 ExecStart=/usr/sbin/sshd -D $OPTIONS (code=exited, status=1/FAILURE)
     Main PID: 12325 (code=exited, status=1/FAILURE)
    
    May 21 00:05:31 kvm systemd[1]: sshd.service: main process exited, code=exited, status=1/FAILURE
    May 21 00:05:31 kvm systemd[1]: Failed to start OpenSSH server daemon.
    May 21 00:05:31 kvm systemd[1]: Unit sshd.service entered failed state.
    May 21 00:05:31 kvm systemd[1]: sshd.service failed.
    
    [root@kvm /usr/local/src/openssh-8.0p1]# systemctl status sshd.service
    ● sshd.service - SYSV: OpenSSH server daemon
       Loaded: loaded (/etc/rc.d/init.d/sshd; bad; vendor preset: enabled)
       Active: failed (Result: exit-code) since Tue 2019-05-21 00:21:06 CST; 9s ago
         Docs: man:systemd-sysv-generator(8)
      Process: 22813 ExecStart=/etc/rc.d/init.d/sshd start (code=exited, status=1/FAILURE)
     Main PID: 22560 (code=exited, status=1/FAILURE)
    
    May 21 00:21:06 kvm sshd[22813]: @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
    May 21 00:21:06 kvm sshd[22813]: Permissions 0640 for '/etc/ssh/ssh_host_ed25519_key' are too open.
    May 21 00:21:06 kvm sshd[22813]: It is required that your private key files are NOT accessible by others.
    May 21 00:21:06 kvm sshd[22813]: This private key will be ignored.
    May 21 00:21:06 kvm sshd[22813]: sshd: no hostkeys available -- exiting.
    May 21 00:21:06 kvm systemd[1]: sshd.service: control process exited, code=exited status=1
    May 21 00:21:06 kvm sshd[22813]: [FAILED]
    May 21 00:21:06 kvm systemd[1]: Failed to start SYSV: OpenSSH server daemon.
    May 21 00:21:06 kvm systemd[1]: Unit sshd.service entered failed state.
    May 21 00:21:06 kvm systemd[1]: sshd.service failed.
    [root@kvm /usr/local/src/openssh-8.0p1]# sshd -t
    @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
    @         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
    @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
    Permissions 0640 for '/etc/ssh/ssh_host_rsa_key' are too open.
    It is required that your private key files are NOT accessible by others.
    This private key will be ignored.
    @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
    @         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
    @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
    Permissions 0640 for '/etc/ssh/ssh_host_ecdsa_key' are too open.
    It is required that your private key files are NOT accessible by others.
    This private key will be ignored.
    @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
    @         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
    @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
    Permissions 0640 for '/etc/ssh/ssh_host_ed25519_key' are too open.
    It is required that your private key files are NOT accessible by others.
    This private key will be ignored.
    sshd: no hostkeys available -- exiting.
    [root@kvm /usr/local/src/openssh-8.0p1]#
  • 解決策make installコマンドを実行すると、keyファイルに関する警告情報が表示される可能性があります.この場合、関連するkeyファイルの権限を600に変更する必要があります.変更しなければ、sshdサービスを再起動するとエラーが表示されます.
  • chmod 600 /etc/ssh/ssh_host_rsa_key
    chmod 600 /etc/ssh/ssh_host_ecdsa_key
    chmod 600 /etc/ssh/ssh_host_ed25519_key
  • sshdサービス
  • を構成する
    #        /etc/init.d/     sshd
    cp -p /usr/local/src/openssh-8.0p1/contrib/redhat/sshd.init /etc/init.d/sshd
    #       
    chmod +x /etc/init.d/sshd
    #           
    systemctl enable sshd
    /sbin/chkconfig sshd on
    #   root    
    sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin yes/g' /etc/ssh/sshd_config
    #   selinux  
    sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config 
    sed -i 's/SELINUX=permissive/SELINUX=disabled/g' /etc/selinux/config 
    setenforce 0
    #   sshd  
    systemctl restart sshd
  • 現在のsshバージョン
  • を表示
    [root@kvm ~]# ssh -V
    OpenSSH_8.0p1, OpenSSL 1.0.2k-fips  26 Jan 2017
    [root@kvm ~]# 

    仕上げ作業


    ホストテストsshが使用可能かどうかを再起動


    Disable telnetサービスをオフにする

    systemctl disable xinetd
    systemctl disable telnet.socket
    systemctl stop xinetd.service
    systemctl stop telnet.socket