要塞サーバーへのMOSH、内部ホストへのSSH


7

私がしているssh、自動的に要塞ホストを経由して転送するように設定します:

Host bastion_host
    HostName bastion.example.com

Host internal_host
    ProxyCommand ssh -q bastion_host nc -q0 internal_host.dmz 22
    User internal_user

これは動作します。ただし、mosh経由で接続しようとすると、次のエラーが表示されます。

$ mosh internal_host
/usr/local/bin/mosh: Could not resolve hostname internal_host
ssh_exchange_identification: Connection closed by remote host
/usr/local/bin/mosh: Did not find remote IP address (is SSH ProxyCommand disabled?).

私が探しているのは、システムから要塞ホストへのmosh接続と、要塞ホストから内部ホストへの通常のトンネルです。可能?ssh


fooとbarを、bastion_hostやinternal_hostなどのよりわかりやすい名前に置き換えることはできますか?私はあなたの意図を理解していると確信できるほど十分に設定ファイルを追跡することができません。
ニック

質問を更新しました。すぐに理解できるはずです。
xj9 14年

素晴らしい、意図は今明確であり、私は問題を再現できます:ssh bastion_hostとssh internal_hostは両方ともmosh bastion_hostと同様に機能しますが、mosh internal_hostは引用したエラーを引き起こします。
ニック

回答:


6

ssh configでProxyCommandを使用し、moshはエラーメッセージでProxyCommandに言及しています。これが重要な手がかりだと思います。moshはProxyCommandを内部で使用します。その際、おそらく独自の設定をオーバーライドします。

次のような手動のポートフォワード呼び出しでProxyCommandを回避しました。

ssh -fN -L 2222:internal_host.example.com:22 bastion_host

次に、ポート2222でローカルホストに接続しようとします。

mosh --ssh="ssh -p2222" internal_user@localhost

ProxyCommandエラーの代わりに、これを取得します。

mosh-server: invalid option -- 'l'
Usage: mosh-server new [-s] [-i LOCALADDR] [-p PORT] [-c COLORS] [-- COMMAND...]

bastion_hostを使用せずにmoshを直接使用する場合でも、moshの異なるバージョンが原因であると思われます。いずれにせよ、メッセージにもかかわらず直接接続が機能するので、それが問題だとは思いません。むしろ、問題はポート転送がポート22のみを処理し、moshも60000:61000でUDPポートを使用することだと思います。sshトンネリングはUDPトラフィックを簡単に転送できないため、別のアーキテクチャを使用した方が良いと思います。

ローカルマシンがネットワークなどを変更する可能性があるため、最初のホップでmoshを使用したいと思います。なぜmoshとsshをこのように(おそらくエイリアスを使用して)使用しないのですか?

mosh bastion_host ssh internal_user@internal_host

0

mosh要塞サーバーへの接続に使用し、tmuxそのセッション内で実行して、内部サーバーへの永続的な接続を維持します。それはあなたの状況にももっと役立つかもしれません。

2019年5月更新

私は少し私のプロセスを変更し、実行しているtmuxローカルと今のラッパー関数を持っているmosh私の中で~/.zshrc。詳細の一部をトリミングしましたが、要点がわかります。

function mosh() {
  case $@ in
  hostname)
    command mosh bastion.domain.com -- bash -c 'echo "Bouncing via bastion..." && echo && ssh hostname.domain.com'
    ;;
  *)
    command mosh "$@"
    ;;
  esac
}
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.