このチュートリアルは、Debian10最小サーバーでのSSHサーバーのセットアップと構成に焦点を当てています
SSH 、 Secure Shell の場合 は、ローカルネットワーク内またはインターネット経由で離れたマシンへのリモートログインを操作するために使用されるネットワークプロトコルです。 SSHアーキテクチャには通常、SSHクライアントがリモートマシンに接続するために使用するSSHサーバーが含まれています。
システム管理者は、SSHを日常的に使用してネットワーク経由でリモートマシンに接続している可能性が非常に高いです。
その結果、新しいホストがインフラストラクチャにオンボーディングされる場合、それらにSSHをインストールして有効にするように構成する必要があります。
このチュートリアルでは、 OpenSSHを介してSSHをインストールして有効にする方法を説明します。 、Debian10ディストリビューションで。
前提条件
Debian 10にSSHサーバーをインストールするには、ホストでsudo権限が必要です。
sudo権限があるかどうかを確認するには、次のコマンドを実行します
$ sudo -l
端末に次のエントリが表示されている場合は、昇格された特権があることを意味します

デフォルトでは、最小限の構成であっても、sshユーティリティをホストにインストールする必要があります。
SSHユーティリティのバージョンを確認するには、次のコマンドを実行できます
$ ssh -V

ご覧のとおり、私はOpenSSLv1.1.1でOpenSSHv7.9を実行しています。
SSHサーバーがホストにインストールされていることを意味するのではなく、SSHユーティリティを使用してクライアントとしてリモートマシンに接続できる可能性があることを意味していることに注意してください。
また、SSHプロトコルに関連する特定のユーティリティ(たとえば、scpなど)またはFTPサーバーに関連する特定のユーティリティ(sftpなど)が私のホストで利用可能になることも意味します。
Debian10へのOpenSSHサーバーのインストール
まず、更新コマンドを実行して、パッケージが最新であることを確認します
$ sudo apt-get update

Debian 10にSSHサーバーをインストールするには、次のコマンドを実行します
$ sudo apt-get install openssh-server
このコマンドは完全なインストールプロセスを実行し、SSHサーバーに必要なすべてのファイルをセットアップする必要があります。
インストールが成功した場合は、ホストにsshdサービスがインストールされているはずです。
新しくインストールしたサービスを確認するには、次のコマンドを実行します
$ sudo systemctl status sshd

デフォルトでは、SSHサーバーはポート22で実行されます。
これは、SSH通信に割り当てられたデフォルトのポートです。次のnetstatコマンドを実行して、ホストでこれが当てはまるかどうかを確認できます
$ netstat -tulpn | grep 22

素晴らしい!これで、SSHサーバーがDebian10ホストで稼働しています。
ファイアウォール設定でSSHトラフィックを有効にする
Debian 10システムでデフォルトのファイアウォールとしてUFWを使用している場合は、ホストでSSH接続を許可する必要がある可能性があります。
ホストでSSH接続を有効にするには、次のコマンドを実行します
$ sudo ufw allow ssh

システム起動時にSSHサーバーを有効にする
おそらくおわかりのように、SSHサーバーはホスト上でサービスとして実行されています。
また、起動時に開始するように指示されている可能性が非常に高くなります。
サービスが有効になっているかどうかを確認するには、次のコマンドを実行できます
$ sudo systemctl list-unit-files | grep enabled | grep ssh
端末に結果が表示されない場合は、サービスを有効にして、コマンドを再実行してください
$ sudo systemctl enable ssh

DebianでのSSHサーバーの設定
SSHを介してユーザーにアクセスを許可する前に、特にサーバーがオンラインVPSとして実行されている場合は、攻撃されないように一連の安全な設定を行うことが重要です。
過去にすでに見たように、SSH攻撃はかなり一般的ですが、使用可能なデフォルト設定を変更すれば回避できます。
デフォルトでは、SSH構成ファイルは / etc / ssh /にあります。

このディレクトリには、さまざまな構成ファイルがありますが、最も重要なものは次のとおりです:
- ssh_config :クライアントのSSHルールを定義します。これは、SSHを使用してリモートホストに接続したり、ホスト間でファイルを転送したりするたびに適用されるルールを定義することを意味します。
- sshd_config :SSHサーバーのSSHルールを定義します。たとえば、到達可能なSSHポートを定義したり、特定のユーザーがサーバーと通信することを拒否したりするために使用されます。
OpenSSHサーバーの構成と保護に関心があるため、SSHセットアップのサーバー全体の部分を変更することは明らかです。
SSHデフォルトポートの変更
安全なSSHサーバーを実行するための最初のステップは、OpenSSHサーバーによって割り当てられたデフォルトを変更することです。
sshd_config構成ファイルを編集して、次の行を探します。
#Port 22
ポートを他のプロトコル用に予約されていないポートに変更してください。この場合は2222を選択します。

ホストに接続するときに、デフォルトのポートで実行されていない場合は、SSHポートを自分で指定します。
詳細については、「SSHサーバーへの接続」セクションを参照してください。
SSHサーバーでのルートログインの無効化
デフォルトでは、ルートログインはSSHサーバーで利用できます。
ハッカーがサーバーにrootとしてログインした場合、完全な災害になるため、明らかにそうではないはずです。
偶然にDebian10インストールでrootアカウントを無効にした場合でも、ある日rootログインを再度有効にすることを選択した場合に備えて、rootログインを拒否するようにSSHサーバーを設定できます。
SSHサーバーでルートログインを無効にするには、次の行を変更します
#PermitRootLogin
PermitRootLogin no

キーベースのSSH認証の構成
SSHでは、ホストに接続する方法が2つあります。パスワード認証(ここで行っていること)を使用する方法と、SSHキーのセットを使用する方法です。
Debian 10でのキーベースのSSH認証に興味がある場合は、このテーマに関するチュートリアルがここにあります。
SSHサーバーを再起動して変更を適用する
変更を適用するには、SSHサービスを再起動し、正しく再起動されていることを確認してください
$ sudo systemctl restart sshd
$ sudo systemctl status sshd

また、デフォルトのポートを変更する場合は、簡単なnetstatコマンドを実行して変更が正しく適用されていることを確認してください
$ netstat -tulpn | grep 2222

SSHサーバーへの接続
SSHサーバーに接続するには、次の構文でsshコマンドを使用します
$ ssh -p <port> <username>@<ip_address>
LANネットワーク経由で接続している場合は、次のコマンドを使用してマシンのローカルIPアドレスを取得してください
$ sudo ifconfig

たとえば、127.0.0.1にある自分のインスタンスに接続するには、次のコマンドを実行します
$ ssh -p 2222 <user>@127.0.0.1
パスワードを入力し、サーバーの信頼性が正しいことを証明するように求められます。

SSHサーバーを終了する
Debian 10でSSHサーバーを終了するには、Ctrl + Dを押すか、「logout」と入力すると、接続が終了します。

SSHサーバーの無効化
Debian 10でSSHサーバーを無効にするには、次のコマンドを実行します
$ sudo systemctl stop sshd
$ sudo systemctl status sshd

そこから、SSHサーバーにアクセスできなくなります。

トラブルシューティング
場合によっては、Debian 10でSSHサーバーをセットアップしようとすると、多くのエラーメッセージが表示されることがあります。
セットアップ中に発生する可能性のある一般的なエラーのリストは次のとおりです。
Debian:SSH接続が拒否されました
通常、ファイアウォールがDebianで適切に構成されていないため、このエラーが発生します。
「SSH接続が拒否されました」を解決するには、UFWファイアウォールの設定を再確認する必要があります。
デフォルトでは、DebianはデフォルトのファイアウォールとしてUFWを使用するため、ファイアウォールルールをチェックして、SSHが正しく許可されているかどうかを確認することをお勧めします。
$ sudo ufw status
Status: active
To Action From
-- ------ ----
22/tcp ALLOW Anywhere
iptablesを使用している場合は、iptablesコマンドを使用して現在のIPルールを確認することもできます。
$ sudo iptables -L -n
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT tcp -- anywhere anywhere tcp dpt:ssh
SSHにルールが設定されていない場合は、iptablesコマンドを再度実行して設定できます。
$ sudo iptables -I INPUT -p tcp -m tcp --dport 22 -j ACCEPT
Debian:SSHアクセスが拒否されました
Debianで「SSHアクセスが拒否されました」というエラーメッセージが表示され、SSHサーバーへのアクセスが拒否される場合があります。
この問題を解決するには、使用している認証方法によって異なります。
SSHパスワードアクセスが拒否されました
パスワード方式を使用している場合は、パスワードを再確認し、正しく入力していることを確認してください。
また、特定のユーザーのサブセットのみを許可するようにSSHサーバーを構成することもできます。その場合は、そのリストに属していることを確認してください。
最後に、rootとしてログインする場合は、「sshd_config」ファイルの「PermitRootLogin」オプションを変更したことを確認してください。
#PermitRootLogin
PermitRootLogin yes
SSHキーアクセスが拒否されました
SSH認証にSSHキーを使用している場合は、キーが「authorized_keys」ファイルに正しく配置されていることを再確認する必要がある場合があります。
方法がわからない場合は、Debian10でのSSHキー認証に関するガイドに従ってください。
Debian:パッケージopenssh-serverが見つかりません
これについては、APTリポジトリが正しく設定されていることを確認する必要があります。
次のエントリをsources.listファイルに追加し、パッケージを更新します。
$ sudo nano /etc/apt/sources.list
deb http://ftp.us.debian.org/debian wheezy main
$ sudo apt-get update
結論
このチュートリアルでは、Debian10ホストにSSHサーバーをインストールして構成する方法を学びました。
また、LANまたはインターネットを介して安全で堅牢なSSHサーバーを実行するために適用する必要のある基本的な構成オプションについても学びました。
Linuxシステム管理に興味がある場合は、専用のカテゴリにこのテーマに関するチュートリアルがたくさんあります。