Rocky Linux上にSSHサーバを構築して
リモートからSSHでLinuxに接続します
この記事ではRocky LinuxにSSHサーバ構築します。
最後まで読み進めると、リモートのSSHクライアントからサーバへ接続できるようになります。
目次
SSHサーバの設定と起動
sshd_conigを編集
# viで以下のファイルを開きます
$ sudo vi /etc/ssh/sshd_config
# ファイルを開いて以下の設定をコメントアウトを外します
〜〜省略〜〜
Port 22
〜〜省略〜〜
PubkeyAuthentication yes
保存してviを終了します。
SSHサーバを起動する
systemctlコマンドでSSHDサービスを起動します。
# サービスを起動します
$ systemctl start sshd
# サービスの状態を確認します
# 以下のように「Active: active (running)」と表示されていれば正常に起動しています
[user@localhost ~]$ systemctl status sshd
● sshd.service - OpenSSH server daemon
Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled; vendor preset: enabled)
Active: active (running) since Tue 2023-02-14 11:21:07 EST; 1 day 22h ago
Docs: man:sshd(8)
man:sshd_config(5)
Main PID: 1106 (sshd)
Tasks: 1 (limit: 35381)
Memory: 2.5M
CPU: 9ms
CGroup: /system.slice/sshd.service
└─1106 "sshd: /usr/sbin/sshd -D [listener] 0 of 10-100 startups"
2月 14 11:21:07 localhost.localdomain systemd[1]: Starting OpenSSH server daemon...
2月 14 11:21:07 localhost.localdomain sshd[1106]: Server listening on 0.0.0.0 port 22.
2月 14 11:21:07 localhost.localdomain sshd[1106]: Server listening on :: port 22.
2月 14 11:21:07 localhost.localdomain systemd[1]: Started OpenSSH server daemon.
# 自動的にSSHサーバが起動するようにする
systemctl enable sshd
ファイヤーウォールを設定してSSH通信を許可する
ファイヤーウォールが起動しているのでSSH接続を許可する設定を行います。
#--permanent: 設定を恒久的に変更する(指定しない場合、OS再起動で元に戻る)
$ firewall-cmd --add-port=22/tcp --permanent
$ firewall-cmd --reload
これでSSHサーバ側の構築は完了です。
次に接続する側のPC(クライアント)の設定を行います
SSHサーバへ接続するクライアントの設定
SSHサーバは起動しましたが、このままではまだ接続できません。
接続するためにはクライアント側で認証用の鍵を作成して、公開鍵をSSHサーバ側へ登録する必要があります。
まずはクライアントで鍵を作成します。
認証用の鍵を作成
# sshkeygenコマンドでSSH Keyを作成します
# ssh-keygen -t [鍵の認証形式] -b [ビット長] -f [ファイル名]
# 以下のコマンドはED25519形式、ファイル名がid_rsa_rocky_ssh_keyで鍵を作成します
$ ssh-keygen -t ed25519 -f id_ed25519_rocky_ssh_key
Generating public/private ed25519 key pair.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in id_ed25519_rocky_ssh_key
Your public key has been saved in id_ed25519_rocky_ssh_key.pub
The key fingerprint is:
SHA256:fAxyodHO+N702iX7lglM6paG+DK32uZq20ZyNFW8WzQ user@MacBook-Pro.local
The key's randomart image is:
+--[ED25519 256]--+
| ... o. |
| o... . E |
| o+o. o . |
| .+=o o . |
| oS.o+ o |
| . +.o + |
| * = o...o |
| =o* *..++ |
| .+%*+..oo. |
+----[SHA256]-----+
これで鍵が作成されましたので、確認してみます。
作成した鍵はホームディレクトリの「.ssh」配下に保存されています。
鍵は秘密鍵と公開鍵のペアで作成されます。
秘密鍵は絶対に外に漏らさないように注意します。(家の鍵のようなもので、これを落としてしまうと誰でも家に入れてしまいます。今回の場合は家がSSHサーバですね)
% ls ~/.ssh/
id_ed25519_rocky_ssh_key id_ed25519_rocky_ssh_key.pub
無事に作成されていることが確認できました。
公開用の鍵をSSHサーバへ登録する
次に先ほど作成した鍵のペアのうちファイル名が「〜.pub」のファイルを接続したいSSHサーバへ登録します。
# SSHサーバへ公開鍵を転送します
ssh-copy-id -i ~/.ssh/id_ed25519_rocky_ssh_key.pub [リモートユーザー]@[リモートサーバーのホスト名 or IPアドレス]
% ssh-copy-id -i ~/.ssh/id_ed25519_rocky_ssh_key user@192.168.8.128
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/Users/hogehoge/.ssh/id_ed25519_rocky_ssh_key.pub"
The authenticity of host '192.168.8.128 (192.168.8.128)' can't be established.
ED25519 key fingerprint is SHA256:2yNTprZPz24WZBbpOv3M7KwrRuBuGproTl/v0MKH+G8.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
user@192.168.8.128's password:
Number of key(s) added: 1
Now try logging into the machine, with: "ssh 'user@192.168.8.128'"
and check to make sure that only the key(s) you wanted were added.
これで鍵の登録が完了しました。
サーバにSSH接続する
# SSH接続する
ssh -i ~/.ssh/ user@192.168.8.128
Activate the web console with: systemctl enable --now cockpit.socket
Last login: Thu Feb 16 11:44:52 2023 from 192.168.8.1
[user@localhost ~]$
無事に接続することができました!
SSHサーバ側でパスワード認証をOFFにする
最後にSSHサーバの設定でパスワード認証をOFFにしてSSHサーバを再起動します。
# viで以下のファイルを開きます
$ sudo vi /etc/ssh/sshd_config
〜〜省略〜〜
# コメントを外してyes -> noに変更します
PasswordAuthentication no
以上で全ての設定が完了しました。
お疲れ様でした。