ウェブサイト検索

モッシュシェルとは何ですか、そしてどのように使いますか?


モッシュ、または「モバイルシェル」は、SSHの代替として設計されており、特にモバイルデバイスや遅い接続のラップトップ向けです。モッシュはUDPを介して動作し、WiFiネットワークを変更したり、変動する携帯信号を経験した場合でも、接続を維持します。

モッシュとは何ですか?

MoshのUDPベースの転送システムは、従来のSSHよりも安定性が高く、パケットロスをより効果的に処理します。接続が一時的に切断されても、接続が復帰次第すぐに再接続し、入力中のコマンドもそのままにしておきます。

これにより遅延が大幅に減少します。遅いサーバーにSSH接続を試みたことがある方なら、キー入力すら遅くて反応が鈍くなるのに気づくでしょう。これは、SSHクライアントがサーバーからのTCPレスポンスを待っているためで、サーバーが何らかの理由でそれを傍受する可能性があるからです。Moshはより知的で、リアルタイムでキー入力を表示します。さらに、下線付きのタイピング予測も行い、これも便利です。

もしあなたが長期的な持続性だけを求めているのなら、代わりに使うことができます

tmux

あなたのサーバー上でSSHを使って。Tmuxはターミナルを複数のペインに分割し、各ペインには複数のタブがあります。これらはすべてSSHセッションを通じてサーバーに持続します。ここでの利点は、SSHセッションが切断されてもサーバー上での作業に影響を与えないことで、Moshと似ています。

しかしモッシュと

tmux

また、Moshは接続が切れた場合、手動で実行することなく自動的にtmuxセッションに再接続するため、一緒にうまく動作します。

ssh

と

tmux -a t [name]

全てをもう一度。

モッシュはどれくらい安全ですか?

MoshはSSHを介して最初の接続を行うため、認証はSSHのセキュリティと同程度です。MoshはUDPで送信されるトラフィックにAES-128暗号化を使用しているため、あなたのトラフィックは盗聴されることはありません。

Moshの主な問題は、多くのポートを開く必要があることです。Moshは接続のIPアドレスに応じて60000から61000の範囲内の任意のポートを使用できます。そして、接続の期間中は通常同じポートを使用しますが、それが保証されているわけではありません。これは大きな問題ではありませんが、1000のポートを開くことは本当に良いセキュリティプラクティスではありません。

iptablesのようなファイアウォールを実行している場合は、これらのポートを手動で開く必要があります。

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

AWSのようなサービスでサーバーを運営している場合、ファイアウォールでもポートを開く必要があります。より安全にしたい場合は、ポートノッキングを使用してこれらのアドレスを閉じ、Moshがノックしたときだけ開くことができますが、セッション中にポートが変更される場合はこれも理想的ではありません。

要するに、Moshを使用していてセキュリティが心配な場合は、おそらくプライベートネットワークで待ち受けさせ、VPNを利用するべきです。

Moshサーバーをインストールし、Moshクライアントを取得する

Moshが動作するためには、サーバーにMoshのバイナリがインストールされている必要があります。これはsshdのようなデーモンを実行するわけではなく、SSH経由で接続する際にMoshクライアントが最初に実行するコマンドです。接続が閉じると、サーバーは実行中のMoshサーバーを終了します。

インストールは非常に簡単で、ほとんどのパッケージマネージャーで利用可能です。UbuntuのようなDebianベースのシステムの場合、次のようになります:

sudo apt-get install mosh

これによりクライアントとサーバーがインストールされるので、両方に同じパッケージをインストールします。サーバー向けのインストールでは、単にapt-getをあなたのディストリビューションのパッケージマネージャーに置き換えるだけで済みます。

Windowsの場合、Chrome用のクライアントをインストールする必要があります。Windows用のバイナリはまだありません。

macOSの場合、パッケージを直接インストールするか、Homebrewを使用してインストールできます。

brew install mosh

iOSの場合、TermiusやBlink Shellのようなアプリを使用できます。

そして、Androidでは、TermuxやJuiceSSHのようなアプリを使用できます。

いずれにせよ、SSHのように接続します:

mosh user@server

これはユーザー名とパスワードで接続します。これがあなたにとって理想的でない場合、--ssh パラメータを使って新しいSSHオプションを手動で指定することもできます:

mosh --ssh="~/bin/ssh -i ~/ssh/id_rsa" user@port

このコマンドはパスワードの代わりにあなたのプライベートキーを使用します。特に、電話や他のデバイスからの新しいものである場合、サーバーがこのプライベートキーを受け入れるように設定されている必要があることに注意してください。

関連記事: