SSHはSecureShellの略で、構成、管理、監視、トラブルシューティングなどのためにローカルネットワークまたはインターネット上のリモートサーバーに安全にアクセスするために使用されるプロトコルです。
この記事では、SSHを使用してリモートLinuxサーバーを管理する方法について説明します。
Debian10マシンですべてのコマンドを実行しました。
前提条件
次のものが必要です。
- root権限を持つ2台のDebian10マシン。
- リモートマシンのIPアドレス、ユーザー名、およびパスワード。
- 両方のマシンでのインターネット接続。
オープンSSHサーバーをインストールするにはどうすればよいですか?
インフラストラクチャに新しいLinuxマシンをセットアップしたら、リモートアクセスの準備をすることが重要です。したがって、アクセスしようとしているリモートサーバーまたはマシンにopensshをインストールする必要があります。
開いているSSHサーバーをインストールする前に、次のコマンドを実行してリポジトリを更新します。
apt-get update
操作が完了するのを待ちます。
リポジトリを更新した後、root権限で次のコマンドを実行して、開いているSSHサーバーをインストールします。
apt-get install openssh-server
確認を求められたら、キーボードから「y」を押して、インストールが完了するのを待ちます。完了するまでに数分かかる場合があります。
SSHサーバー設定の構成
Open SShがサーバー側にインストールされたら、基本的な構成設定を編集できます。ターミナルを開き、root権限で次のコマンドを実行します。
nano /etc/ssh/sshd_config
以下は出力例です。
上記のファイルでさまざまなパラメータを変更できます。
デフォルトでは、SSHはポート22でリッスンします。目的のポートに変更できます。サーバーと同時に確立できる最大セッション(MaxSessions)を変更することもできます。デフォルト値は10です。
サーバーのSSHポートの変更
すでに説明したように、サーバーはデフォルトでポート22でリッスンします。特定のポートをリッスンするようにサーバーを構成する場合の手順は次のとおりです。
ターミナルを開き、root権限で次のコマンドを実行します。
nano /etc/ssh/sshd_config
上のスクリーンショットに示すように、ファイルを開く必要があります。
ポート22または#Port22を見つけて、#記号なしで目的のポート番号を入力します。
0〜1023のポートは特定のサービス用に予約されているため、1024〜65535のポート番号を使用することをお勧めします。
2222を割り当てるとすると、SSH構成ファイルに次のように記述します。
Port 2222
以下は、ポート番号を変更した後の出力例です。
ターミナルで次のコマンドを実行して、SSHサービスを再起動します。
service ssh restart
SSHサーバーでのルートログインの有効化
デフォルトでは、セキュリティ上の理由から、root権限でSSHサーバーに直接ログインすることはできません。このログインを有効にする場合は、SSHサーバー構成ファイルを変更する必要があります。
ターミナルを開き、root権限で次のコマンドを実行して、構成ファイルを開きます。
nano /etc/ssh/sshd_config
認証ブロックに次の行を追加します
PermitRootLoginはい
以下は、構成ファイルに変更を加えた後の出力例です。
root権限を持つ端末で次のコマンドを実行して、SSHサービスを再起動します。
service ssh restart
SSHサーバーへのログイン試行の失敗を減らす
デフォルトでは、SSHサーバーへのログインを6回試行できます。値が6の半分に達すると、追加のログイン失敗がログに記録されます。この値を変更する場合は、SSHサーバー構成ファイルのMaxAuthTriesパラメーターを調整する必要があります。
ターミナルを開き、root権限で次のコマンドを実行します。
Authenticationブロックに次の行を追加します(この値を1に設定するとします)。
MaxAuthTries 1
以下は、ファイルに変更を加えた後の出力例です。
root権限を持つ端末で次のコマンドを実行して、SSHサービスを再起動します。
service ssh restart
以下は出力例です。
1回のログイン失敗の後、次のスクリーンショットに示すように、認証失敗のメッセージが多すぎます。
SSHサーバーに特定のIPをリッスンさせる
デフォルトでは、SSHサーバーはSSHサーバーに割り当てられたすべてのIPをリッスンします。ただし、構成ファイルに変更を加えることで、SSHサーバーに特定のIPをリッスンさせることができます。方法は次のとおりです。
次のスクリーンショットに示すように、インターフェイスに2つのIPアドレス(10.1.1.2と10.1.1.3)が割り当てられているとします。サーバーにIPアドレス10.1.1.2をリッスンさせたい。
ターミナルを開き、root権限で次のコマンドを実行して、SSH構成ファイルを開きます。
nano /etc/ssh/sshd_config
ファイルの先頭に次の行を追加します
ListenAddress 10.1.1.2
以下は、構成ファイルに変更を加えた後の出力例です。
ターミナルで次のコマンドを実行して、SSHサービスを再起動します。
service ssh restart
特定のユーザーまたはグループによるSSHサーバーへのログインの許可または拒否
デフォルトでは、すべてのユーザーがSSHサーバーにリモートでログインできます。ただし、特定のユーザーまたはグループがSSHサーバーにログインすることを許可または拒否することができます。
ターミナルを開き、root権限で次のコマンドを実行して、SSHサーバー構成ファイルを開きます。
nano /etc/ssh/sshd_config
以下は出力例です。
ユーザー「tony」のみがSSHサーバーにリモートログインできるようにしたいとします。他のユーザーはSSHサーバーにログインできなくなります。複数のユーザーがいる場合は、スペースで区切る必要があります。
SSHサーバー構成ファイルに次の行を追加します。
AllowUsers tony
以下は、行を追加した後のサンプル構成ファイルです。
ターミナルでroot権限を使用して次のコマンドを実行し、SSHサービスを再起動します。
service ssh restart
同様に、すべてのユーザーがSSHサーバーにリモート接続できるようにしたいが、1つ以上を拒否したい場合は、サーバー構成ファイルに次の行を追加します。ユーザーはコマンドで区切る必要があります。ユーザー「tony」のみを拒否したい場合は、サーバー構成ファイルに次の行を追加します。
DenyUsers tony
以下は、上記の行を追加した後のサンプル構成ファイルです。
ターミナルでroot権限を使用して次のコマンドを実行し、SSHサービスを再起動します。
service ssh restart
同様に、構成ファイルに次の行を追加することで、ユーザーのグループがSSHサーバーにログインすることを許可および拒否できます。
AllowGroups <groupname>
または
DenyGroups <groupname>
許可または拒否するグループが複数ある場合は、スペースで区切ることができます。
許可と拒否の組み合わせは、次の順序で処理されます。
DenyUsers、AllowUsers、DenyGroups、そして最後にAllowGroups
ログイン猶予時間の変更
デフォルトでは、SSHの後にリモートサーバーにログインするのに2分かかります。 2分以内にリモートサーバーにログインできない場合、SSHは切断されます。ログイン猶予時間を変更する方法は次のとおりです。
ターミナルを開き、root権限で次のコマンドを実行して、サーバー構成ファイルを開きます。
nano /etc/ssh/sshd_config
以下は出力例です。
次の行を見つけます
#LoginGraceTime 2m
この行を希望の猶予時間、たとえば1分に置き換えます。完全な行は、
である必要がありますLoginGraceTime 1m
以下は、変更を加えた後のサンプル構成ファイルです。
ファイルを閉じ、fileコマンドを発行してSSHサービスを再起動します。
service ssh restart
OpenSSHクライアントのインストール方法
リモートマシンまたはサーバーにアクセスするDebian10マシンはクライアントと呼ばれ、「オープンSSHクライアント」をインストールする必要があります。
ターミナルを開き、次のコマンドを実行してリポジトリを更新します。
apt-get update
操作が完了するのを待ちます。
リポジトリが更新されたらすぐに、次のコマンドを実行して、開いているSSHクライアントをインストールします。
apt-get install openssh-client
確認を求められたら、キーボードからYを押します。インストールには数分かかる場合がありますので、しばらくお待ちください。
クライアントとサーバーの両方で次のコマンドを実行して、SSHサービスが実行されていることを確認します。
リモートマシンのクライアントとサーバーの両方でSSHを実行したら、リモート管理に取り掛かることができます。
SSHを使用したリモートDebian10サーバーへの接続
リモートのDebian10マシンに接続するには、そのIPアドレス、ユーザー名、およびパスワードが必要です。
SSHサーバーがデフォルトのポート22でリッスンしている場合のコマンドの完全な構文は次のとおりです。
ssh
ユーザーパスワードの入力を求められ、キーボードを使用して入力し、Enterキーを押します。
ユーザーがtonyで、リモートマシンのIPアドレスが10.1.1.2であるとします。ターミナルで次のコマンドを実行します。
ssh [email protected]
以下は出力例です。
これで、上のスクリーンショットに示すように安全に接続されているはずです。
ただし、SSHサーバーが他のポートでリッスンしている場合(2222を想定)。コマンドの完全な構文は次のようになります。
ssh-p<ポート番号>[メール保護]アドレス
ユーザーがtonyで、リモートマシンのIPアドレスが10.1.1.2であるとします。ターミナルで次のコマンドを実行します。
ssh -p 2222 [email protected]
結論
これが、SSHを使用したLinuxサーバーのリモート管理に関するチュートリアルでした。楽しんでいただけたでしょうか。