カスタム SSH 接続を構成してリモート アクセスを簡素化する方法
SSH (SSH クライアント) は、マシンにリモート アクセスするためのプログラムであり、ユーザーがリモート ホスト上でコマンドを実行できるようにします。これは、安全でないネットワーク上で 2 つの信頼できないホスト間で安全な暗号化通信を提供するように設計されているため、リモート ホストにログインする場合に最も推奨される方法の 1 つです。
SSH は、システム全体の設定ファイルとユーザー固有の (カスタム) 設定ファイルの両方を使用します。このチュートリアルでは、カスタム ssh 構成ファイルを作成し、特定のオプションを使用してリモート ホストに接続する方法を説明します。
要件:
- Linux デスクトップに OpenSSH クライアントをインストールしておく必要があります。
- SSH 経由のリモート接続に使用される一般的なオプションを理解します。
SSHクライアント設定ファイル
SSH クライアント設定ファイルの場所は次のとおりです。
/etc/ssh/ssh_config
– これは、デフォルトのシステム全体の構成ファイルです。これには、ssh クライアント マシンのすべてのユーザーに適用される設定が含まれています。~/.ssh/config
または$HOME/.ssh/config
– ユーザー固有のカスタム構成ファイルです。特定のユーザーに適用される構成があります。したがって、システム全体の構成ファイルのデフォルト設定をオーバーライドします。これが作成して使用するファイルです。
デフォルトでは、ユーザーはパスワードを使用して ssh で認証されますが、ssh keygen を使用して 5 つの簡単な手順で ssh パスワードなしログインをセットアップできます。
注: ディレクトリ ~/.ssh
がデスクトップ システムに存在しない場合は、次の権限を使用してディレクトリを作成します。
mkdir -p ~/.ssh
chmod 0700 ~/.ssh
上記の chmod コマンドは、ssh 設定で必要とされるディレクトリに対する読み取り、書き込み、および実行のアクセス許可をユーザーのみが持つことができることを意味します。
ユーザー固有の SSH 構成ファイルを作成する方法
通常、このファイルはデフォルトでは作成されないため、ユーザーのみの読み取り/書き込み権限で作成する必要があります。
touch ~/.ssh/config
chmod 0700 ~/.ssh/config
上記のファイルにはホストの仕様で定義されたセクションが含まれており、セクションは仕様で設定されたパターンのいずれかに一致するホストにのみ適用されます。
~/.ssh/config
の従来の形式は次のとおりで、すべての空行と ‘#’
で始まる行はコメントとみなされます。
Host host1
ssh_option1=value1
ssh_option2=value1 value2
ssh_option3=value1
Host host2
ssh_option1=value1
ssh_option2=value1 value2
Host *
ssh_option1=value1
ssh_option2=value1 value2
上記の形式から:
- ホスト host1 – ホスト 1 のヘッダー定義です。ここでホスト仕様が始まり、次のヘッダー定義であるホスト host2 で終わります。セクション。
- host1、host2 はコマンド ラインで使用する単なるホスト エイリアスであり、リモート ホストの実際のホスト名ではありません。
- ssh_option1=value1、ssh_option2=value1 value2 などの設定オプションは、一致したホストに適用され、適切に整理された形式にするためにインデントする必要があります。
- ssh_option2=value1 value2 などのオプションの場合、値 value1 が最初に考慮され、次に value2 が考慮されます。
- ヘッダー定義 Host * (
*
はパターン、つまり 0 個以上の文字に一致するワイルドカード) は、0 個以上のホストに一致します。
上記の形式を考慮すると、ssh が設定ファイルを読み取る方法は次のとおりです。次のように ssh コマンドを実行して host1 にリモート アクセスすると、次のようになります。
ssh host1
上記の ssh コマンドは次のことを行います。
- 構成ファイル内のホスト エイリアス host1 と一致し、定義ヘッダーである ホスト host1 の下に設定されたオプションを適用します。
- 次に、次のホスト セクションである ホスト host2 に移動すると、コマンド ラインで指定した名前が一致しないことがわかります。そのため、ここからはオプションは使用されません。
- 最後のセクションであるホスト * に進み、すべてのホストと一致します。ここでは、このセクションのすべてのオプションをホスト接続に適用します。ただし、前のセクションですでに使用されているオプションの値をオーバーライドすることはできません。
- 同じことがホスト 2 にも当てはまります。
ユーザー固有の SSH 構成ファイルの使用方法
ssh クライアント構成ファイルがどのように機能するかを理解したら、次のように作成できます。サーバー環境に適用できるオプションと値 (ホスト エイリアス、ポート番号、ユーザー名など) を必ず使用してください。
お気に入りのエディターで構成ファイルを開きます。
vi ~/.ssh/config
そして、必要なセクションを定義します。
Host fedora25
HostName 192.168.56.15
Port 22
ForwardX11 no
Host centos7
HostName 192.168.56.10
Port 22
ForwardX11 no
Host ubuntu
HostName 192.168.56.5
Port 2222
ForwardX11 yes
Host *
User tecmint
IdentityFile ~/.ssh/id_rsa
Protocol 2
Compression yes
ServerAliveInterval 60
ServerAliveCountMax 20
LogLevel INFO
上記の ssh 設定オプションの詳細な説明。
- HostName – ログインする実際のホスト名を定義します。代わりに、数値 IP アドレスを使用することもできます。これも許可されています (コマンド ラインと HostName 仕様の両方で) 。
- ユーザー – ログインするユーザーを指定します。
- ポート – リモート ホストに接続するポート番号を設定します。デフォルトは 22 です。リモート ホストの sshd 構成ファイルで構成されたポート番号を使用します。
- プロトコル – このオプションは、ssh がサポートするプロトコルのバージョンを優先順位に従って定義します。通常の値は 「1」 と 「2」 です。複数のバージョンはカンマで区切る必要があります。
- IdentityFile – ユーザーの DSA、Ed25519、RSA、または ECDSA 認証 ID を読み取るファイルを指定します。
- ForwardX11 – X11 接続が安全なチャネルと DISPLAY セットを介して自動的にリダイレクトされるかどうかを定義します。可能な値は 「はい」 または 「いいえ」 の 2 つです。
- 圧縮 – リモート接続中に「はい」 値を使用して圧縮を設定するために使用されます。デフォルトは「いいえ」です。
- ServerAliveInterval – タイムアウト間隔を秒単位で設定します。その後、サーバーから応答 (またはデータ) が受信されない場合、ssh は暗号化されたチャネルを通じてメッセージを送信し、サーバーからの応答を要求します。デフォルト値は 0 で、サーバーにメッセージが送信されないことを意味します。BatchMode オプションが定義されている場合は 300 です。
- ServerAliveCountMax – ssh がサーバーから応答を受信せずに送信できるサーバー アライブ メッセージの数を設定します。
- LogLevel – SSH からのメッセージをログに記録するときに使用される詳細レベルを定義します。許可される値には、QUIET、FATAL、ERROR、INFO、VERBOSE、DEBUG、DEBUG1、DEBUG2、および DEBUG3 が含まれます。デフォルトは INFO です。
リモート Linux ホスト (私の場合は CentOS 7) に接続する標準的な方法は、上記の設定ファイルのセクション 2 で定義されており、通常は次のコマンドを入力します。
ssh -i ~/.ssh/id_rsa -p 22 [email
ただし、ssh クライアント構成ファイルを使用すると、次のコマンドを入力するだけで済みます。
ssh centos7
ssh クライアント設定のマニュアル ページで、その他のオプションと使用例を見つけることができます。
$man ssh_config
このガイドでは、Linux でユーザー固有の (カスタム) SSH クライアント構成ファイルを使用する方法を説明しました。この記事に関してご返信いただく場合は、以下のフィードバック フォームをご利用ください。