SSHに少しでも精通している場合は、SSHを使用してリモートLinuxシステムに接続できることをご存知でしょう。
SSHを使用してリモートシステムに接続するのは簡単です。次のようなコマンドを使用するだけです。
ssh [email protected]_IP
これにより、デフォルトのSSHポート22に接続されます。必要に応じてポートを指定することもできます。
サーバーが1つしかない場合、これはすべて単純明快です。サーバーのIPアドレスを覚えていない場合でも、有名なターミナルキーボードショートカットCtrl + Rを使用して履歴を逆検索し、過去に使用したSSHコマンドを見つけることができます。
ただし、管理するサーバーが複数ある場合は、事態が複雑になります。時々接続するサーバーは約10台あります。一部は本番サーバーであり、一部はテストサーバーです。
現在、これらのサーバーを追跡することは簡単ではありません。履歴からSSHコマンドを見つけても、どのIPがどのサーバーに属しているかを推測するのは困難です。
もちろん、Linode、UpCloud、DigitalOcean、Google Cloudでダッシュボードを開いて、IPを取得したり、ローカルシステムにリストを保持したりできます。
より適切で簡単な方法は、SSH構成ファイルを使用することです。
SSH構成ファイルを使用してリモートサーバーに簡単に接続する
SSH構成ファイルを使用すると、ホスト構成ごとに異なるプロファイルを作成できます。このようなプロファイルに制限はなく、できるだけ多く追加できます。
したがって、SSHを介して複数のリモートシステムに接続する場合は、SSHプロファイルを作成することで時間を節約できます。
使い方をお見せしましょう。
ステップ1:SSH構成ファイルを作成する
SSHをインストールすると、〜/.sshディレクトリが自動的に作成されます。このダイレクトには、公開鍵、秘密鍵、known_hostsファイルが含まれています。設定もここに保存されます。
少なくともUbuntuでは、SSH構成ファイルはデフォルトでは作成されません。このファイルは、次のようなtouchコマンドを使用して簡単に作成できます。
touch ~/.ssh/config
ステップ2:設定ファイルにSSHプロファイルを追加する
SSH構成ファイルができたので、VimまたはNanoを使用して編集できます。従うべき構文の例を示しましょう。
IP275.128.172.46でサーバーに接続するとします。あなたのユーザー名はアリスであり、サーバーはあなたのウェブサイトをホストするために使用されます。 SSHセキュリティを強化するには、デフォルトのSSHポート22の代わりにポート1500を使用します。
このすべての情報は、次の方法で〜/ .ssh/configファイルに追加できます。
Host website
Hostname 275.128.172.46
User alice
Port 1500
情報をファイルに保存するだけです。サービスを再起動する必要はありません。
さて、このような長いコマンドを書く代わりに:
ssh [email protected] -p 1500
このコマンドを使用するだけです(タブ補完も機能します):
ssh website
上記のコマンドを実行すると、sshは〜/ .ssh/configでwebsiteという名前のホストを探します。その名前のホストが見つかると、関連するすべての情報を取得し、SSH接続の確立に使用します。
いくつか疑問に思われるかもしれませんので、ここで説明します:
- ホスト情報を入力する際のスペースやタブのインデントの制限はありません。スペースまたはタブのインデントは、構成ファイルをわかりやすくするために使用されます。
- ホスト名は、サーバーのIPアドレス、またはネットワーク上で解決できるホスト名にすることができます。
- ホスト名、ユーザー、ポートなどのすべてのパラメーターはオプションです。ただし、個人的には、少なくともホスト名を保持することをお勧めします。これは、ほとんどの場合、ホスト名が必要である(そして忘れてしまう)ためです。
- SSH構成ファイルが正しく構成されていない場合、SSH接続に使用しようとするとエラーが発生します。
- SSH構成にパスワードを保存することはできません。簡単にアクセスできるように、公開SSHキーをサーバーに追加することをお勧めします。
ステップ3:SSH構成ファイルに複数のプロファイルを追加する
前の手順で、SSHプロファイルを追加する方法について説明しました。複数のプロファイルを追加して、次のステップに進みましょう。
SSH構成ファイルは次のようになります。
Host website
Hostname 275.128.172.46
User alice
Port 1500
Host forum-server
Hostname 275.128.172.47
User alice
Host main-server
Hostname 275.128.172.49
Host common-test-server
Hostname test-server
Host *
User root
今回は、4つの異なるSSHプロファイルを追加しました。
ホスト*に気づきましたか ファイルの最後のエントリ?このエントリを使用して、すべてのプロファイルに共通のパラメータを追加できます。そのパラメータがプロファイルに明示的に記載されていない場合。
したがって、メインサーバーのSSHプロファイルを使用しようとすると、自動的にrootユーザーになります。
ssh main-server =ssh [email protected]
SSH構成の順序
ssh構成は次の順序に従います。
- コマンドラインオプション
- ユーザーの構成ファイル(〜/ .ssh / config)
- システム全体の構成ファイル(/ etc / ssh / ssh_config)
これは、入力したコマンドが優先され、〜/ .ssh / configを調べてから、/ etc / ssh/ssh_configを調べることを意味します。
したがって、プロファイルをオーバーライドする場合は、sshコマンドの-oオプションを使用してオーバーライドできます。
たとえば、次のコマンドを使用する場合:
ssh -o "User=bob" website
〜/ .ssh / config(前のステップ)で定義されたユーザーaliceの代わりにユーザーbobを使用します。
SSH構成にはまだまだたくさんあります
正直なところ、SSH構成ファイルには、1つの記事ではカバーできないものがたくさんあります。名前/IPマッチング、サブネットなどを使用できます。
この記事の範囲は、SSH構成を紹介し、さまざまなリモートLinuxシステムに簡単に接続するためのSSHプロファイルの作成を支援することでした。
SSH構成ファイルの作成中に使用できるパラメーターについて詳しくは、ssh_configのマニュアルページをいつでも参照できます。
このSSHのヒントがお役に立てば幸いです。すでにSSH構成ファイルを使用していて、気の利いたヒントがある場合は、コメントセクションで他の人と共有してください。