sshサーバー(sshd)をopenssh9.6p1にアップ

OS: Ubuntu 18.04.6 LTS サーバー

2024/4/5更新

opensshの脆弱性からopenssh9.6へアップグレードした。ところが、sshdサーバーのopensshのバージョンが上がっておらず、嵌ったところがあるので手順をメモ。一部、記憶に頼っているので記載ミスがあるかもしれない。この記事に従って作業する方は自己責任で。(以下、">"は「コマンドプロンプト」を表す。)

 

前調べ:インストールされているopensshのバージョン

 

> ssh -V

OpenSSH_7.6p1 Ubuntu-4ubuntu0.7+esm3, OpenSSL 1.0.2n  7 Dec 2017

 

> which openssl

/usr/bin/openssl

 

make a backup

> sudo cp /usr/bin/openssl /usr/bin/openssl~openssh7.6p1

 

1) openssh9.6p1を入手しコンパイルインストール

rootで作業をする。

> sudo su

 

Build essentials

> sudo apt install build-essential zlib1g-dev libssl-dev libpam0g-dev libselinux1-dev libkrb5-dev

 

Working directory:

> cd ~/Downloads/

> wget -c http://mirror.exonetric.net/pub/OpenBSD/OpenSSH/portable/openssh-9.6p1.tar.gz

 

> tar -xzf openssh-9.6p1.tar.gz

> cd openssh-9.6p1

 

> which openssh

/usr/bin/openssl

 

set -with-ssl-dir= to the head director of the openssl

> ./configure --with-kerberos5 --with-md5-passwords --with-pam --sysconfdir=/etc/ssh --with-ssl-dir=/usr

 

> make

> sudo make install

 

Restart your machine

> sudo systemctl restart sshd

> sudo shutdown -r now

 

Check new version. Open a new terminal and run:

 

> ssh -V

OpenSSH_9.6p1, OpenSSL 1.1.1  11 Sep 2018

 

2) ところが、上記でsshサーバー(sshd)もアップグレードされていると思い込んでいたが、上記手順ではどうもそうではない。

 

外部PCよりssh、オプション-vは接続の詳細をデバッグするため。

> ssh -v <user>@<server>

>> 

Remote: ... openSSH_7.6p1...

<< 

Remote(即ちserver)はopenssh7.6p1のまま、、、???

 

そこで、openssh (openssl)がどこにあるかを調べてみると

 

default install (openssh7.6p1) のsshdは /usr/sbin/sshd

openssh9.6p1は /usr/local/sbin/sshd

(上記(1)のインストールでは、sshdは /usr/local/sbin/sshdにインストールされている。ssh接続が止まらないよう default sshdを入れ替えないのかも?)

 

システムの自動起動serviceは、

/lib/systemd/system/ssh.service

中身では

ExecStart=/usr/sbin/sshd ...

 

即ち、defaultのsshd serverが起動されている。

(pathを/usr/local/sbin/sshdに変更して試験してみたが、openssh9.6p1では途中でtimeout、で起動しない。直接 /usr/sbin/sshdを書き換えていたらsshで接続できなくなる、、、危ない、危ない。)

 

/usr/local/sbin/sshdを起動してみると、

 

> /usr/local/sbin/sshd

 

なら走る、、、。そこで、/usr/local/sbin/sshdを自動で走らせるよう、sshd96p1.serviceを /etc/systemd/system に作成

 

> sudo cd /etc/systemd/system

 

> vi sshd96p1.service

>> 

[Unit]

Description=/usr/local/sbin/sshd service

After=network.target

 

[Service]

User=root

ExecStart=/usr/local/sbin/sshd

Restart=always

type=simple

 

[Install]

WantedBy=multi-user.target

<< 

defaultのsshd自動起動を外しておく

> systemctl disable sshd

 

sshd96p1.serviceを起動

> systemctl daemon-reload

> systemctl enable sshd96p1.service

> systemctl start sshd96p1

 

これで、PCを再起動しても、外部からのsshにはopenssh9.6p1で返答。

 

外部> ssh -v <user>@<server>

>> 

Remote: ... openSSH_9.6p1 ...

<< 

 

愛でたし、愛でたし。