NATルーターの背後にいるSSH経由で(おばあさんのような)誰かを助けるにはどうすればよいですか?


14

他の人をすばやく支援するために、SSHは特にGNU Screenと組み合わせて非常に便利です。ユーザーがNATルーターの背後にいることはよくあります。ユーザーがルーターを構成できる場合でも、パスワードを覚えたり、適切なオプションを見つけたりするには時間がかかります。

それでは、NATルーターの背後にいる他の人をSSH経由で助ける最も簡単な方法は何ですか?

現在、以下のコマンドを実行してターミナル開き、http//ip.appspot.com/などのサイトからIPを渡すように人々に伝えています。

sudo apt-get install openssh-server ssh-import-id && ssh-import-id lekensteyn

明らかに、NATルーターの背後にいる場合、またはパーソナルファイアウォールが構成されている場合、これは機能しません。だから、次のようなものがあります:

sshd --accept-help-from lekensteyn

Teamviewerのような代替物を探しているのではなく、SSHのようなシェルを探しています。オープンソースであるべきです。

回答:


13

ご使用のコンピューターがSSH接続を受け入れることができる場合、追加のコンピューターなしでPavlos G.がリンクし手法を使用する方法があります。

まず、友人が次のように接続する権限のない*ユーザーが必要です。

sudo adduser reverse --shell /bin/false

友達にトンネルを開始するように伝えてください:

ssh -N -R 62222:localhost:22 reverse@lekensteyns-server

次に、自分のコンピューター(lekensteyns-server)で、逆接続を開始します。

ssh -p 62222 localhost

*適切な特権のないユーザーを作成することについて助言できるほどセキュリティについて十分に知りません。それはおそらく別の質問でカバーされるべきものです。



2

あなたの特定のニーズに基づいて、私はおそらく:

  1. ルーターのパスワードを教えてもらう
  2. ログインして、ポート22のみのポート転送を設定します
  3. SSH(または追加のポートを開く必要がある場合はSSHトンネリング)を介して接続し、作業を完了します。

また、リバースsshトンネルを試すことができることも忘れていましたが、このソリューションは技術的にはもう1台のミドルコンピューターが必要です。

詳細はこちらをご覧ください


1)ルーターアクセスは一般に禁止されていることが多いため、おそらく機能しません。
レーケンシュタイン

2

IPv6がまだない場合、通常はIPv6トンネルを設定します(sixxs.netまたはhe.netから)。そうすれば、コンピューターに静的アドレスがあり、NATを台無しにする必要はありません。また、キーベースの認証を設定するのが好きです(そうすれば、パスワードを伝える必要はありません)。

Sixxsには、使用する独自のクライアントがあります。ほとんどすべてのNATの背後で機能し、IPv4アドレスが変更されると自動的に更新されます。彼らはそれを設定する方法についての指示を持ち、Ubuntu用にパッケージ化されています。

Hurricane Electricは、IPv6パッケージがIPv4パケットのペイロードとして送信されるトンネルを使用します。Sixxsとは異なり、TCP / UDPは使用されません。これは、背後にあるNATがプロトコル41(ポートではない)の転送をサポートする必要があり、NATの背後にある1台のコンピューターのみがそれを使用できることを意味します。このようなトンネルを使用するソフトウェアはUbuntuに組み込まれています。

HEの場合、次のようなものを使用します/etc/network/interfaces

auto he-ipv6
iface he-ipv6 inet6 v4tunnel
     endpoint 216.218.226.238
     address  2001:470:a29f::2
     netmask  64
     ttl 64
     up ip -6 route add default dev he-ipv6
     down ip -6 route del default dev he-ipv6

他に必要なことは、トンネルエンドポイントを更新することです。外部IPがいつ変更されるかわからないため、エンドポイントを数分ごとに更新する必要があります。次のようなものを使用して、cronから実行できます。

#!/bin/sh
echo -n "Hurricane Electric Proto-41 tunnel endpoint update: "
#(C) 2010 Erik B. Andersen This script is licensed under the latest version of the
# AGPL published by the Free Software Foundation at http://www.gnu.org/licenses/ .
####Set these for each different site#########
pass="passwordhere"
user_id="a765b8e2f474667dcb56e08c5f1aa05b"
tunnel_id="97817"
####Past here doesn't need to be changed######
wget -4 "https://ipv4.tunnelbroker.net/ipv4_end.php?ipv4b=AUTO&pass=$(echo -n "${pass}" | md5sum | grep -o -E "[0-9a-fA-F]{32}")&user_id=${user_id}&tunnel_id=${tunnel_id}" -O /dev/null -o /dev/null --no-check-certificate
echo " Done"

1
そのようなトンネルを正しく設定するには、どのような努力が必要ですか?この接続はもちろん、キーベース、私が使用する理由だのであるSSH-インポート-IDを
Lekensteyn

確かに、私はこのトリックについてもっと学びたいです。
ラファウチェーラク

0

長年にわたり、私はOPが要求することを正確に行うためのGUIを開発しました...ただし、Pavlosが提案するように、パブリックIPを持つ3番目のサーバーへのsshアクセスが必要です。ここでdebianパッケージと手順を見つけることができます:

http://pietrobattiston.it/reachme

(まだ)初期設定を処理できないことに注意してください。つまり、パスワードなしの接続のために自分でrsaキーを設定する必要があります。「reachthem」を設定すると、「reachme」が接続されているかどうかを確認したり、sshシェルを開いたり、ファイルシステムを閲覧したり、画面を表示したりできます(実験的)。

明らかに、ændrükの回答のように、コンピューター自体にパブリックIPがあれば、3番目のコンピューターは必要ありません。そして明らかに、GUIの利点は、リモートユーザーが端末にコマンドを入力する必要がないことです...しかし、リモートユーザーがreachmeをインストールする必要がある場合、この利点の一部は失われます。そのため、Ubuntuをインストールするすべてのユーザーに常にreachmeをインストールしてセットアップします。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.