ウェブサイト検索

Linux で SSH 接続を高速化する 4 つの方法


SSH は、Linux サーバーをリモートで管理するための最も一般的で安全な方法です。リモート サーバー管理の課題の 1 つは、特にリモート マシンとローカル マシン間のセッション作成の場合の接続速度です。

このプロセスにはいくつかのボトルネックがあります。1 つのシナリオは、初めてリモート サーバーに接続するときです。通常、セッションの確立には数秒かかります。ただし、複数の接続を連続して開始しようとすると、オーバーヘッド (操作を実行するための過剰または間接的な計算時間、メモリ、帯域幅、またはその他の関連リソースの組み合わせ) が発生します。

この記事では、Linux でのリモート SSH 接続を高速化する方法に関する 4 つの役立つヒントを紹介します。

1. IPV4 経由で SSH 接続を強制する

OpenSSH は IPv4/IP6 の両方をサポートしていますが、 場合によってはIPv6 接続が遅くなる傾向があります。したがって、以下の構文を使用して、IPv4 のみで ssh 接続を強制することを検討できます。

ssh -4 [email 

あるいは、ssh 設定ファイル /etc/ssh/ssh_config (グローバル設定) または ~ で AddressFamily (接続時に使用するアドレス ファミリを指定します) ディレクティブを使用します。 /.ssh/config (ユーザー固有のファイル)。

受け入れられる値は、「any 」、IPv4 のみの「inet 」、または「inet6 」です。

vi ~.ssh/config 

ユーザー固有の ssh 構成ファイルの構成に関する便利なスターター ガイドは次のとおりです。

  1. カスタム SSH 接続を構成してリモート アクセスを簡素化する方法

さらに、リモート マシンでは、/etc/ssh/sshd_config ファイル内の上記のディレクティブを使用して、IPv4 経由の接続を考慮するように sshd デーモンに指示することもできます。

2. リモート マシンでの DNS ルックアップを無効にする

デフォルトでは、sshd デーモンはリモート ホスト名を検索し、リモート IP アドレスの解決されたホスト名がまったく同じ IP アドレスにマッピングされていることも確認します。これにより、接続の確立やセッションの作成に遅延が発生する可能性があります。

UseDNS ディレクティブは上記の機能を制御します。無効にするには、/etc/ssh/sshd_config ファイルを検索してコメントを解除します。設定されていない場合は、値 no を指定して追加します。

UseDNS  no

3. SSH接続を再利用する

ssh クライアント プログラムは、リモート接続を受け入れる sshd デーモンへの接続を確立するために使用されます。新しい ssh セッションを作成するときに、すでに確立されている接続を再利用できます。これにより、後続のセッションが大幅に高速化されます。

これは ~/.ssh/config ファイルで有効にすることができます。

Host *
	ControlMaster auto
	ControlPath  ~/.ssh/sockets/%r@%h-%p
	ControlPersist 600

上記の設定 (ホスト *) では、次のディレクティブを使用して接続するすべてのリモート サーバーの接続を再利用できます。

  • ControlMaster – 単一のネットワーク接続上で複数のセッションを共有できるようにします。
  • ControlPath – 接続共有に使用されるコントロール ソケットへのパスを定義します。
  • ControlPersistControlMaster と一緒に使用すると、最初のクライアント接続が閉じられた後、バックグラウンドでマスター接続を開いたままにする (将来のクライアント接続を待機する) ように ssh に指示します。

特定のリモート サーバーへの接続に対してこれを有効にできます。たとえば、次のようになります。

Host server1
	HostName   www.example.com
	IdentityFile  ~/.ssh/webserver.pem
      	User username_here
	ControlMaster auto
	ControlPath  ~/.ssh/sockets/%r@%h-%p
	ControlPersist  600

この方法では、最初の接続でのみ接続オーバーヘッドが発生し、その後のすべての接続が大幅に高速になります。

4. 特定の SSH 認証方法を使用する

ssh 接続を高速化するもう 1 つの方法は、すべての ssh 接続に特定の認証方法を使用することです。ここでは、ssh keygen を使用して 5 つの簡単な手順で ssh パスワードなしログインを構成することをお勧めします。

それが完了したら、上記の ssh_config ファイル (グローバルまたはユーザー固有) 内で PreferredAuthentications ディレクティブを使用します。このディレクティブは、クライアントが認証方法を試行する順序を定義します (複数の方法を使用するには、コマンド区切りのリストを指定できます)。

PreferredAuthentications=publickey 

必要に応じて、コマンド ラインから次の構文を使用します。

ssh -o "PreferredAuthentications=publickey" [email 

安全ではないと考えられるパスワード認証を希望する場合は、これを使用してください。

ssh -o "PreferredAuthentications=password" [email 

最後に、上記の変更をすべて行った後、sshd デーモンを再起動する必要があります。

systemctl restart sshd	#Systemd
service sshd restart 		#SysVInit

ここで使用されるディレクティブの詳細については、ssh_config および sshd_config のマニュアル ページを参照してください。

man ssh_config
man sshd_config 

Linux システムで ssh を保護するための次の便利なガイドも確認してください。

  1. SSH サーバーを保護して保護するための 5 つのベスト プラクティス
  2. Linux で非アクティブまたはアイドル状態の SSH 接続を切断する方法

それは今のところすべてです! SSH 接続を高速化するためのヒントやコツはありますか。これを行う他の方法についてもぜひ知りたいと思っています。以下のコメントフォームを使用して共有してください。