OpenSSH-9.5p1

OpenSSH の概要

OpenSSH パッケージは ssh クライアントと sshd デーモンを提供します。 これはネットワーク越しの通信にあたり、権限情報をはじめとする情報を暗号化します。 ssh コマンドと scp コマンドは、それぞれ telnetrcp に対するセキュアな実装です。

[注記]

注記

LFS や依存パッケージが本ブックに示す最新安定バージョンでなかった場合には、BLFS 開発版においては、パッケージのビルドや処理実行が適切に行われないことがあります。

パッケージ情報

  • ダウンロード (HTTP): https://ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-9.5p1.tar.gz

  • ダウンロード MD5 sum: 3d29a7394816deeb57186899d7f7662c

  • ダウンロードサイズ: 1.7 MB

  • 必要ディスク容量: 45 MB (テスト実施時はさらに 22 MB)

  • 概算ビルド時間: 0.2 SBU (parallelism=4 利用時; テスト実施はプロセッサーの処理スピードとは無関係に最低でも 20 分以上)

OpenSSH の依存パッケージ

任意

GDB-14.1 (for tests), Linux-PAM-1.5.3 (PAM configuration files from Shadow-4.14.2 are used to create openssh ones), Xorg アプリケーション (or Xorg build environment, see Command Explanations), MIT Kerberos V5-1.21.2, Which-2.21 (for tests), libedit, LibreSSL Portable, OpenSC, libsectok

任意, 実行時 (エントロピー収集のためにのみ利用される)

Net-tools-2.10, Sysstat-12.7.4

OpenSSH のインストール

他のコンピューターへの接続の際に、OpenSSH は二つのプロセスとして起動します。 初めのプロセスは特権プロセスであり、必要に応じて特権の発行を制御します。 二つめのプロセスはネットワーク通信を行います。 環境設定を適切に行うためには、インストール手順において追加作業が必要となります。 それは root ユーザーとなって、以下のコマンドを行うものです。

install -v -g sys -m700 -d /var/lib/sshd &&

groupadd -g 50 sshd        &&
useradd  -c 'sshd PrivSep' \
         -d /var/lib/sshd  \
         -g sshd           \
         -s /bin/false     \
         -u 50 sshd

以下のコマンドを実行して OpenSSH をビルドします。

./configure --prefix=/usr                            \
            --sysconfdir=/etc/ssh                    \
            --with-privsep-path=/var/lib/sshd        \
            --with-default-path=/usr/bin             \
            --with-superuser-path=/usr/sbin:/usr/bin \
            --with-pid-dir=/run                      &&
make

ビルド結果をテストする場合は make -j1 tests を実行します。

root ユーザーになって以下を実行します。

make install &&
install -v -m755    contrib/ssh-copy-id /usr/bin     &&

install -v -m644    contrib/ssh-copy-id.1 \
                    /usr/share/man/man1              &&
install -v -m755 -d /usr/share/doc/openssh-9.5p1     &&
install -v -m644    INSTALL LICENCE OVERVIEW README* \
                    /usr/share/doc/openssh-9.5p1

コマンド説明

--sysconfdir=/etc/ssh: このパラメーターを指定することで、設定ファイルを /usr/etc にインストールしないようにします。

--with-default-path=/usr/bin and --with-superuser-path=/usr/sbin:/usr/bin: These set PATH consistent with LFS and BLFS Shadow package.

--with-pid-dir=/run: This prevents OpenSSH from referring to deprecated /var/run.

--with-pam: このパラメーターは Linux-PAM サポートを有効にします。

--with-xauth=$XORG_PREFIX/bin/xauth: Set the default location for the xauth binary for X authentication. The environment variable XORG_PREFIX should be set following Xorg build environment. This can also be controlled from sshd_config with the XAuthLocation keyword. You can omit this switch if Xorg is already installed.

--with-kerberos5=/usr: このオプションは Kerberos 5 サポートを有効にします。

--with-libedit: このオプションは sftp コマンドにおいての行編集および履歴機能を有効にします。

OpenSSH の設定

設定ファイル

~/.ssh/*, /etc/ssh/ssh_config, /etc/ssh/sshd_config

There are no required changes to any of these files. However, you may wish to view the /etc/ssh/ files and make any changes appropriate for the security of your system. One recommended change is that you disable root login via ssh. Execute the following command as the root user to disable root login via ssh:

echo "PermitRootLogin no" >> /etc/ssh/sshd_config

If you want to be able to log in without typing in your password, first create ~/.ssh/id_rsa and ~/.ssh/id_rsa.pub with ssh-keygen and then copy ~/.ssh/id_rsa.pub to ~/.ssh/authorized_keys on the remote computer that you want to log into. You'll need to change REMOTE_USERNAME and REMOTE_HOSTNAME for the username and hostname of the remote computer and you'll also need to enter your password for the ssh-copy-id command to succeed:

ssh-keygen &&
ssh-copy-id -i ~/.ssh/id_ed25519.pub REMOTE_USERNAME@REMOTE_HOSTNAME

Once you've got passwordless logins working it's actually more secure than logging in with a password (as the private key is much longer than most people's passwords). If you would like to now disable password logins, as the root user:

echo "PasswordAuthentication no" >> /etc/ssh/sshd_config &&
echo "KbdInteractiveAuthentication no" >> /etc/ssh/sshd_config

If you added Linux-PAM support and you want ssh to use it then you will need to add a configuration file for sshd and enable use of LinuxPAM. Note, ssh only uses PAM to check passwords, if you've disabled password logins these commands are not needed. If you want to use PAM, issue the following commands as the root user:

sed 's@d/login@d/sshd@g' /etc/pam.d/login > /etc/pam.d/sshd &&
chmod 644 /etc/pam.d/sshd &&
echo "UsePAM yes" >> /etc/ssh/sshd_config

Additional configuration information can be found in the man pages for sshd, ssh and ssh-agent.

Systemd ユニット

システム起動時に SSH サーバーを起動する場合は、blfs-systemd-units-20231205 パッケージに含まれる sshd.service ユニットをインストールします。

make install-sshd

パッケージ構成

インストールプログラム: scp, sftp, ssh, ssh-add, ssh-agent, ssh-copy-id, ssh-keygen, ssh-keyscan, sshd
インストールライブラリ: なし
インストールディレクトリ: /etc/ssh, /usr/share/doc/openssh-9.5p1, /var/lib/sshd

概略説明

scp

rcp に似たファイルコピープログラム。 ただし暗号化プロトコルが用いられます。

sftp

SSH1 および SSH2 プロトコルを用いて動作する FTP ライクなプログラム。

ssh

rloginrsh に似たクライアントプログラム。 ただし暗号化プロトコルが用いられます。

sshd

ssh からのログイン要求を待ち受けるデーモンプログラム。

ssh-add

ssh-agent に対して鍵を追加するツール。

ssh-agent

is an authentication agent that can store private keys

ssh-copy-id

is a script that enables logins on remote machines using local keys

ssh-keygen

鍵生成ツール。

ssh-keyscan

is a utility for gathering public host keys from a number of hosts