序章

SSHは、間違いなく、リモートサーバー管理の事実上の方法です。 ただし、その優位性は、特定の状況下で独自のニュアンスがないことを意味するものではありません。 モバイル接続で移動中にSSH接続を維持しようとしたことがある場合は、この感情に感謝します。

Mosh は、SSHのすべてのセキュリティ上の利点を活用し、SSHに基づいて、劣悪なネットワーク状態やローミング接続に対する耐性を高めています。 また、完全なバッファを送信するのではなく、状態の変化を現在表示されている画面領域にのみ通信することで、応答性を高め、帯域幅の使用量を減らします。

Moshとの接続の開始と認証は、通常のSSH接続を介して行われます。つまり、いくつかの追加構成のみが必要であり、現在のキーベースのセキュリティメカニズムは問題なく機能します。 認証されると、キーがネゴシエートされ、Moshは暗号化されたUDPデータグラムを介した通信に切り替わり、モバイル接続で一般的なクライアントIPと接続ドロップアウトの変化に対するセッションの回復力を高めます。

これらの利点により、Moshは、移動中にタスクを実行する必要がある状況でVPSにインストールするのに最適なオプションになります。

インストール

開始するには、最初にMoshをクライアントとサーバーの両方にインストールする必要があります。 幸い、Moshパッケージは最も人気のあるディストリビューションに存在し、以下はDigitalOceanで提供されるいくつかのディストリビューションのインストール方法です。

Ubuntuの場合:

sudo apt-get install python-software-properties
sudo add-apt-repository ppa:keithw/mosh
sudo apt-get update
sudo apt-get install mosh

Debianの場合:

sudo apt-get install mosh

Arch Linuxの場合:

pacman -S mosh

Fedoraの場合:

sudo yum install mosh

OSXやWindowsなどの他のOSについては、 Moshのドキュメントを参照して、最も適切なインストール方法を見つけてください。

ファイアウォール構成

VPSにファイアウォールを構成している場合(推奨)、Moshが必要とする追加のポートも開く必要があります。

iptablesを直接使用している場合、次のコマンドはMoshが必要とするポートを開きます。

sudo iptables -I INPUT 1 -p udp --dport 60000:61000 -j ACCEPT

デフォルトでは、このファイアウォール設定はシステムの再起動後に保持されないことに注意してください。 この動作を強化するために、iptables-persistantなどのソリューションが存在します。

UFWを使用している場合は、次の方法でポートを開くことができます。

sudo ufw allow 60000:61000/udp

ファイアウォールを管理するために他のプログラムを使用している場合は、60000から61000までのUDPポートを手動で開くようにする必要があります。 ただし、同時接続の数が少ないと予想される場合は、ポート60000(60000:60020など)で開始する場合は、より狭い範囲のポートを開くことができます。

使用法

ほとんどのユースケースでは、MoshはSSHのドロップイン代替品です。つまり、多くのSSHコマンドは単純な変更のみが必要です。 例えば:

ssh [email protected]

# Becomes:

mosh [email protected]

ただし、SSHで他の引数(-pなど)を使用する場合は、少し異なる構文が必要です。

mosh --ssh="ssh -p 22000" [email protected]

実行されると、Moshは標準のSSH接続とよく似たシェルに接続します。 ただし、表面下では、Moshはダムパイプ以上のものであり、接続不良でのパフォーマンスを向上させる独自の機能がいくつかあります。

SSHはリモートマシンで実行されているプログラムからの完全なデータ出力を送信しますが、Moshは接続の両端でvt500ステートマシンを実行し、現在表示されている画面領域にのみ変更を伝達します。 これにより、帯域幅の使用量を大幅に削減し、応答性を維持できます。どちらもモバイル接続のボトルネックになる可能性があります。

接続が完全にダウンした場合、Moshはウィンドウの上部にあるステータスバーで、最後に通信が成功してからの時間を示す通知をすばやく表示します。

接続が復元されると、Moshは自動的に再同期し、セッションを中断したところから続行できます。

また、接続が遅い場合や応答がない場合でも、端末に新しいコマンドを入力すると、入力がすぐに下線付きで表示されることに気付くかもしれません。 このような下線付きのテキストは、MoshがVPSからの応答を確認する前に、リモート端末の状態がどのようになるかを推測していることを示しています。 下線が消えたら、接続の両端が同期していることを確認できます。

ただし、このシステムには1つの欠点があります。現在の画面状態のみをMoshが同期するため、ローカル端末は以前のプログラム出力のスクロールバックバッファを維持しません。 したがって、この出力を保持するには、VPS側でscreentmuxなどのターミナルマルチプレクサを使用することをお勧めします。

概要

このMoshの紹介では、モバイル接続でのSSHに勝る主な利点のいくつかを強調しました。これは、SSHの日常的な使用に取って代わるものではないかもしれませんが、低速の接続に依存せざるを得ない状況では、イライラすることの違いを生む可能性があります。生産的であること。