LoginSignup
666
562

SSH接続を10倍速くするたった3行の設定

Posted at

今回は、SSH接続を劇的に高速化する方法をご紹介します。たった3行の設定を追加するだけで、接続時間を10分の1に短縮できます。しかも、2回目以降の接続では認証も自動的に行われるので、パスワードやパスフレーズの入力も不要になります。

要点

.ssh/configファイルのHost *セクションに以下の3行を追加するだけです。

Host *
  ControlMaster auto
  ControlPath ~/.ssh/mux-%r@%h:%p
  ControlPersist 4h

詳しい説明

1. ControlMaster auto

この設定で、1つのSSH接続で複数のセッションを共有できるようになります。新しくSSH接続を確立するたびに認証情報を入力し直す手間が省けて、接続がぐっと速くなります。具体的には:

  • 初回の接続時のみ認証が必要
  • 2回目以降は既存の接続を再利用するため、認証プロセスをスキップ
  • パスワードやパスフレーズの入力が不要になり、接続がほぼ瞬時に完了

2. ControlPath ~/.ssh/mux-%r@%h:%p

ControlPathは、共有接続のソケットファイルの場所を指定します。%rはリモートのユーザー名、%hはホスト名、%pはポート番号を表します。これで、異なるホストやユーザーごとに個別の共有接続を維持できます。

3. ControlPersist 4h

この設定があると、最後のセッションが終了した後も、指定した時間(ここでは4時間)バックグラウンドで接続を保持し続けます。その間の再接続なら、認証も接続もほぼ一瞬で完了します。

効果はこんな感じ

この設定を適用すると、2回目以降の接続が驚くほど速くなります。僕の環境では、最初の接続に500ミリ秒かかっていたのが、2回目以降はたったの50ミリ秒になりました。

さらに、認証の手間も省けるので、体感的な速さはもっと向上します。パスワードやパスフレーズを入力する時間を考えると、作業効率が格段に上がります。

特に効果を実感できるのは、こんな場合です:

  • よくSSH接続する人
  • 同時にたくさんのSSH接続を開く人
  • ネットワークが不安定な環境でSSHを使う人
  • 複雑なパスワードやパスフレーズを使っている人

ssh -O コマンド

ssh -Oコマンドを使えば、制御接続(ControlMaster接続)を操作できます。主なオプションはこんな感じ:

  • ssh -O check <ホスト名>: 指定したホストへの制御接続があるか確認
  • ssh -O stop <ホスト名>: 指定したホストへの制御接続を停止
  • ssh -O exit <ホスト名>: 指定したホストへの制御接続を終了

これらのコマンドを使えば、長時間維持されている接続を手動で管理できます。例えば、セキュリティを重視する場合は、作業終了時にssh -O exitで確実に接続を閉じることができます。

666
562
5

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
666
562