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


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

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

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

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

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

# ssh -4 [email protected]

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

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

$ vi ~.ssh/config 

ユーザー固有のssh設定ファイルを設定するための便利なスターターガイドです。

  1. How to Configure Custom SSH Connections to Simplify Remote Access

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

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/%[email protected]%h-%p
	ControlPersist 600

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

  • ControlMaster – enables the sharing of multiple sessions over a single network connection.
  • ControlPath – defines a path to the control socket used for connection sharing.
  • ControlPersist – if used together with ControlMaster, tells ssh to keep the master connection open in the background (waiting for future client connections) once the initial client connection has been closed.

これを特定のリモートサーバーへの接続に対して有効にすることができます。例えば:

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

この方法では、最初の接続のための接続オーバーヘッドのみを被り、その後のすべての接続ははるかに速くなります。

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

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

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

PreferredAuthentications=publickey 

必要に応じて、コマンドラインから以下の構文を使用してください。

# ssh -o "PreferredAuthentications=publickey" [email protected]

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

# ssh -o "PreferredAuthentications=password" [email protected]

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

# systemctl restart sshd	#Systemd
# service sshd restart 		#SysVInit

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

# man ssh_config
# man sshd_config 

Linuxシステムでsshを安全にするためのこれらの役に立つガイドもチェックしてください。

  1. 5 Best Practices to Secure and Protect SSH Server
  2. How to Disconnect Inactive or Idle SSH Connections in Linux

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