web-dev-qa-db-ja.com

低速/不安定な接続でsshを実行するにはどうすればよいですか?

非常に遅いシェル接続を処理しています。それはクラウドにあり、私はサーバーから非常に離れています。また、インターネットを介して接続している場合もあり、共有Wifiまたは3Gを使用している可能性もあります。入力した内容をすぐに確認する方法はありますか?コマンドを入力して各文字を待つのは大変です。

20
Zombies

Mosh を試してください。

モッシュ(モバイルシェル)
ローミングを可能にし、断続的な接続をサポートし、ユーザーのキーストロークのインテリジェントなローカルエコーとライン編集を提供するリモートターミナルアプリケーション。

MoshはSSHの代替品です。特にWi-Fi、携帯電話、長距離リンクを介して、より堅牢で応答性が高くなります。

Moshは、GNU/Linux、FreeBSD、Solaris、Mac OS X、およびAndroidで利用できる無料のソフトウェアです。

24
dmourati

dmourati回答の代替(および追加):screenまたはtmuxまたはその他のものを使用して、切断されたときにセッションを存続させます。 (再接続した後、単にセッションに再接続し、全画面プログラム[viなど]を使用していても、ターミナルを離れた状態で確認できます)。他にも多くの利点があります(同僚とのセッションを共有するなど)(Mosh自身のfaqにあるように:

Q:端末のスクロールバックバッファーが不完全なのはなぜですか?

Mosh 1.2は、端末の可視状態のみを同期します。 Mosh 1.3は完全なスクロールバックをサポートします。この問題とそこからリンクされている他の問題を参照してください。当面の回避策は、リモート側でscreenまたはtmuxを使用することです。

また、rsyncを使用してファイルをコピーする必要があります。接続が切れたときに、すでに送信されたパーツをネットワーク経由で再送信する必要はありません。

10
Olivier Dulac

レイテンシ/ボトルネックの場所がわかります。ローカルまたはプロバイダー側​​のいずれかで、インフラストラクチャへのアクセスを改善する必要があります。重要または重要なセッションをtmuxまたはscreenマルチプレクサーでラップします...

番号を教えてください。単純なSSHセッションが問題を起こすには、特に悪い接続が必要です... VPN経由で飛行機から世界の反対側にあるシステムにアクセスする必要がありましたが、それでもまだトラブルが多すぎます。これは永続的な問題ですか? tracerouteは何を伝えますか?

2
ewwhite

このスレッドの将来の読者のために、 blog の@lowellheddingsのヒントを screen と組み合わせて使用​​すると、この問題を解決するのに役立ちます。

Sshクライアントがプロトコルno-opコードコードを数秒ごとに自動的に送信するように構成して、サーバーが接続を切断しないようにすることができます。この設定は、他のクライアントではKeep-AliveまたはStop-Disconnecting-So-Muchと呼ばれることがあります。
/etc/ssh/ssh_configファイルに次の行を追加します:
ServerAliveInterval 60
...

1
Snidhi Sofpro