OpenSSHのインストール

sshの代表的な実装であるOpenSSHをソースコードからインストールする。

sshはGitの依存関係の一つでもあるため,Gitをソースコードからインストールする際にも必要となる。

インストール情報
項目 説明
配布元 OpenSSH
手順 ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable/INSTALL
依存情報 ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable/INSTALL
依存先 (必須)
  • Zlib 1.1.4 or 1.2.1.2+
  • libcrypto (LibreSSL or OpenSSL >= 1.0.1)
依存先 (任意)
  • PRNGD
  • EGD
  • PAM
  • GNOME
  • LibEdit
  • LDNS
  • autoconf 2.69+: Gitリポジトリーからのビルド時
  • Basic Security Module (BSM)
  • makedepend
依存元 Git

任意の依存先が多数存在するが,autoconf以外はなくても問題ないだろう。

インストール手順
sh -ex <<-"EOT"
LOCAL=~/.local J=$(grep -cs '^processor' /proc/cpuinfo || echo 2)
PKG=openssh VER=7.9p1 TAG=V_$(echo $VER | sed 's/\./_/; s/p/_P/')
cd "$LOCAL/src"

if command -v git >/dev/null; then
[ -e $PKG ] || git clone --depth 1 git://anongit.mindrot.org/openssh.git $PKG
cd $PKG
git fetch --depth 1 origin tag $TAG
git checkout $TAG
autoheader
autoconf
else
[ -e $PKG-$VER ] || wget http://ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable/$PKG-$VER.tar.gz
tar -xf $PKG-$VER.*
cd $PKG-$VER
fi

./configure --prefix="$LOCAL/stow/$PKG-$VER" --with-privsep-path="$LOCAL/var/empty" make -j $J && make install cd "$LOCAL/stow" stow -S $PKG-$VER -D $PKG-* EOT
インストール例
日付 バージョン OS 依存関係
2019-02-24 7.9p1 Ubuntu 18.04 GNU Make 4.2.1, GCC 8.1.0, OpenSSL 1.1.1a, Zlib 1.2.11

make install時に,デフォルトだと/var/emptyディレクトリーを作成しようとする。/var/emptyの作成には管理者権限が必要となるため,configure実行時に--with-privsep-path=$LOCAL/var/emptyを指定して場所をローカル環境に変更した。

また,OpenSSH 7.8まではOpenSSL 1.1ではビルドできない。configure時に以下のエラーが出る。

checking OpenSSL library version... configure: error: OpenSSL >= 1.1.0 is not yet supported (have "1010101f (OpenSSL 1.1.1a  20 Nov 2018)") 

ただし,以下のOpenSSH 7.9のリリースノートにあるように,7.9からOpenSSL 1.1とのビルドに対応している。

Portability
———–

* All: support building against the openssl-1.1 API (releases 1.1.0g
and later)
. The openssl-1.0 API will remain supported at least
until OpenSSL terminates security patch support for that API version.

openssh.com/txt/release-7.9

OpenSSH 7.8でビルドする場合は,OpenSSL 1.0を使うように注意する。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です