AlmaLinuxでssh接続をできるようにしてみましょう。
手順
本稿の手順ではroot権限で操作しています。root権限を持っていない場合は、sudo権限を持つユーザで、適宜sudo実行する必要があります。
sudoってなんぞ?な人は↓を参照ください。
sshのパッケージ確認
まずはsshが入っているか確認してみます。
opensshという名称でインストール済みパッケージを検索
dnf list installed|grep -i openssh
実行例
# dnf list installed|grep -i openssh
openssh.x86_64 8.7p1-10.el9_0 @baseos
openssh-clients.x86_64 8.7p1-10.el9_0 @baseos
openssh
とopenssh-clients
という2つのパッケージしか表示されませんでした。
openssh
はsshの基本パッケージで、openssh-clients
はssh接続をする側のクライアントソフト用のパッケージです。
sshサーバとしてssh接続を受け付けるには、sshサーバソフト用のパッケージであるopenssh-server
が必要です。
この状態では、このAlmaLinuxから他のリモートホストへのssh接続はできますが、別の端末からこのAlmaLinuxへのssh接続はできません。
そのため、openssh-server
をインストールを行います。
openssh-serverのインストール
dnf install openssh-server
実行例
# dnf install openssh-server
Last metadata expiration check: 0:00:25 ago on Mon 27 May 2024 02:03:41 PM UTC.
Dependencies resolved.
=========================================================================
Package Arch Version Repository Size
=========================================================================
Installing:
openssh-server x86_64 8.7p1-38.el9 baseos 459 k
Upgrading:
openssh x86_64 8.7p1-38.el9 baseos 457 k
openssh-clients x86_64 8.7p1-38.el9 baseos 712 k
Transaction Summary
=========================================================================
Install 1 Package
Upgrade 2 Packages
Total download size: 1.6 M
Is this ok [y/N]: y
Downloading Packages:
(1/3): openssh-8.7p1-38.el9.x86_64.rpm 1.0 MB/s | 457 kB 00:00
(2/3): openssh-server-8.7p1-38.el9.x86_6 811 kB/s | 459 kB 00:00
(3/3): openssh-clients-8.7p1-38.el9.x86_ 1.0 MB/s | 712 kB 00:00
-------------------------------------------------------------------------
Total 992 kB/s | 1.6 MB 00:01
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
Preparing : 1/1
Running scriptlet: openssh-8.7p1-38.el9.x86_64 1/5
Upgrading : openssh-8.7p1-38.el9.x86_64 1/5
Running scriptlet: openssh-server-8.7p1-38.el9.x86_64 2/5
useradd warning: sshd's uid 74 outside of the SYS_UID_MIN 201 and SYS_UID_MAX 999 range.
Installing : openssh-server-8.7p1-38.el9.x86_64 2/5
Running scriptlet: openssh-server-8.7p1-38.el9.x86_64 2/5
Created symlink /etc/systemd/system/multi-user.target.wants/sshd.service → /usr/lib/systemd/system/sshd.service.
Upgrading : openssh-clients-8.7p1-38.el9.x86_64 3/5
Running scriptlet: openssh-clients-8.7p1-38.el9.x86_64 3/5
Running scriptlet: openssh-clients-8.7p1-10.el9_0.x86_64 4/5
Cleanup : openssh-clients-8.7p1-10.el9_0.x86_64 4/5
Cleanup : openssh-8.7p1-10.el9_0.x86_64 5/5
Running scriptlet: openssh-8.7p1-10.el9_0.x86_64 5/5
Verifying : openssh-server-8.7p1-38.el9.x86_64 1/5
Verifying : openssh-8.7p1-38.el9.x86_64 2/5
Verifying : openssh-8.7p1-10.el9_0.x86_64 3/5
Verifying : openssh-clients-8.7p1-38.el9.x86_64 4/5
Verifying : openssh-clients-8.7p1-10.el9_0.x86_64 5/5
Upgraded:
openssh-8.7p1-38.el9.x86_64 openssh-clients-8.7p1-38.el9.x86_64
Installed:
openssh-server-8.7p1-38.el9.x86_64
Complete!
改めてパッケージを確認します。
# dnf list installed|grep -i openssh
openssh.x86_64 8.7p1-38.el9 @baseos
openssh-clients.x86_64 8.7p1-38.el9 @baseos
openssh-server.x86_64 8.7p1-38.el9 @baseos
openssh-serverが入りました。これで必要なパッケージはそろいました。
sshの有効化
openssh-serverをインストールした後は有効にし、開始する必要があります。
sshサーバの状態確認
systemctl is-active sshd
実行例
# systemctl is-active sshd
inactive
inactiveなので動いていません(=このAlmaLinuxへssh接続はできません)。
sshサーバの有効化と開始
systemctl enable sshd
systemctl start sshd
この2つのコマンドを実行することで、sshサーバを有効にし、sshサーバの稼働を開始することができます。なおこのコマンドは実行しても何も表示はされません。
わかりやすく確認
activeかどうかだけが知りたい場合は以下コマンドを実行します。activeとなっていれば稼働しています。
systemctl is-active sshd
実行例
# systemctl is-active sshd
active
もう少し詳細を確認
以下コマンドを実行すると、sshサービスの稼働状況について詳細な情報を表示できます。
systemctl status sshd
実行例
# systemctl status sshd
● sshd.service - OpenSSH server daemon
Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled; vendor preset: enabled)
Active: active (running) since Mon 2024-05-27 14:16:22 UTC; 58s ago
Docs: man:sshd(8)
man:sshd_config(5)
Main PID: 282 (sshd)
Tasks: 1 (limit: 100645)
Memory: 1.8M
CPU: 39ms
CGroup: /system.slice/sshd.service
└─282 "sshd: /usr/sbin/sshd -D [listener] 0 of 10-100 startups"
May 27 14:16:22 ALC106 systemd[1]: Starting OpenSSH server daemon...
May 27 14:16:22 ALC106 sshd[282]: Server listening on 0.0.0.0 port 22.
May 27 14:16:22 ALC106 sshd[282]: Server listening on :: port 22.
May 27 14:16:22 ALC106 systemd[1]: Started OpenSSH server daemon.
ユーザの作成
このままではまだユーザが存在しないため、ssh接続してもPermissionDenyとか表示されて接続できません。そのためユーザを作成します。
※なお、rootユーザはデフォルトではssh接続できません。
ユーザの作成
useradd yoyo
yoyoはユーザ名です。適宜お好きなユーザー名に変更してください。
ユーザのパスワード変更
passwd yoyo
実行例
# passwd yoyo
Changing password for user yoyo.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.
ssh接続する
いよいよssh環境を構築したAlmaLinuxにssh接続を行います。
別の端末から先ほど作成したユーザでログインします。
今回はWindows端末からコマンドプロンプトでssh接続を行いました。
>ssh ユーザ名@IP/ホスト名
実行例
> ssh yoyo@192.168.1.46
The authenticity of host '192.168.1.46 (192.168.1.46)' can't be established.
ED25519 key fingerprint is SHA256:X9Jlq2XtglvDcwhfJEcZVxaEvlx5W9PGQPlgxHpmxww.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '192.168.1.46' (ED25519) to the list of known hosts.
yoyo@192.168.1.46's password:
初回接続時はyesと入力してエンターを押下します。
次にユーザに応じたパスワードを要求されます。
先ほど変更したパスワードを入力して、プロンプトが表示されたらログイン成功です!
蛇足
sshってなに?
AlmaLinuxに限りませんが、サーバ用途としてLinuxを利用する場合はキーボードやディスプレイなどはすべて取っ払ってしまい、本体に電源コードとLANケーブル位しか挿さない状態にします。これをヘッドレス(headless)サーバといいます。こうすることで、箱と数本のケーブルだけしかないため、部屋の片隅に放置場所の選定が楽になります。
しかしこれでは何かあった時の保守作業が何もできなくなるため、LAN経由で接続できるようにします。この時の接続手段としてsshがあります。
※細かい理屈などは書籍やWebで検索したら出てくるので割愛します。
sshのパッケージ
ssh接続をできるようにするには、ssh接続を受け入れるopenssh-server
、ssh接続をしに行くために必要なopenssh-clients
、両方で必要な基本機能が入っているopenssh
という3つのパッケージが必要です。
なお、ssh接続の受け入れしか行わない場合はopenssh-clients
は不要ですし、ssh接続を受け入れず、クライアントとしてしか使わない場合はopenssh-server
は不要です。
そのため、あえてパッケージを削除して「ssh接続は受け付けるが、そこから多段sshはさせない」、「リモートホストへのssh接続は行うが、他からのssh接続を受け付けない」などというようにセキュリティ範囲を限定する事ができます。
# dnf list installed|grep -i ssh
libssh.x86_64 0.9.6-3.el9 @baseos
libssh-config.noarch 0.9.6-3.el9 @baseos
openssh.x86_64 8.7p1-38.el9 @baseos
openssh-clients.x86_64 8.7p1-38.el9 @baseos
openssh-server.x86_64 8.7p1-38.el9 @baseos
sshのパッケージ詳細を見てみる
あまり見ることもないかもしれないので、パッケージの情報を参照してみます。
# dnf info openssh openssh-clients openssh-server
Last metadata expiration check: 0:33:26 ago on Mon 27 May 2024 02:03:41 PM UTC.
Installed Packages
Name : openssh
Version : 8.7p1
Release : 38.el9
Architecture : x86_64
Size : 1.9 M
Source : openssh-8.7p1-38.el9.src.rpm
Repository : @System
From repo : baseos
Summary : An open source implementation of SSH protocol version 2
URL : http://www.openssh.com/portable.html
License : BSD
Description : SSH (Secure SHell) is a program for logging into and executing
: commands on a remote machine. SSH is intended to replace rlogin and
: rsh, and to provide secure encrypted communications between two
: untrusted hosts over an insecure network. X11 connections and
: arbitrary TCP/IP ports can also be forwarded over the secure channel.
:
: OpenSSH is OpenBSD's version of the last free version of SSH, bringing
: it up to date in terms of security and features.
:
: This package includes the core files necessary for both the OpenSSH
: client and server. To make this package useful, you should also
: install openssh-clients, openssh-server, or both.
Name : openssh-clients
Version : 8.7p1
Release : 38.el9
Architecture : x86_64
Size : 2.0 M
Source : openssh-8.7p1-38.el9.src.rpm
Repository : @System
From repo : baseos
Summary : An open source SSH client applications
URL : http://www.openssh.com/portable.html
License : BSD
Description : OpenSSH is a free version of SSH (Secure SHell), a program for logging
: into and executing commands on a remote machine. This package includes
: the clients necessary to make encrypted connections to SSH servers.
Name : openssh-server
Version : 8.7p1
Release : 38.el9
Architecture : x86_64
Size : 1.0 M
Source : openssh-8.7p1-38.el9.src.rpm
Repository : @System
From repo : baseos
Summary : An open source SSH server daemon
URL : http://www.openssh.com/portable.html
License : BSD
Description : OpenSSH is a free version of SSH (Secure SHell), a program for logging
: into and executing commands on a remote machine. This package contains
: the secure shell daemon (sshd). The sshd daemon allows SSH clients to
: securely connect to your SSH server.