中間サーバーを介したリモートデスクトップ用のSSHトンネルパートII


10

リモートデスクトップを介してリモートデスクトップを実行するために、中間サーバーを使用して2つのSSHトンネルを構成する方法を以前質問し、それを機能させることができました。今、私は同じマシンを使用して同じことをしようとしていますが、逆の順序です。ここに設定があります:

  1. ファイアウォールの背後にあるプライベートネットワーク内のWindows 7 PC。
  2. PCにアクセスできるパブリックアクセスLinuxサーバー。
  3. PCからリモートデスクトップを実行したい自宅のWindows 7ラップトップ。

ラップトップでPuttyを使用して、それからLinuxサーバーへの逆トンネルを作成しますR60666 localhost:3389

PCでPuttyを使用して、PCからLinuxサーバーへの通常のトンネルを作成しますL60666 localhost:60666

LinuxサーバーにSSHで接続し、telnet localhost 60666を実行すると、ここで受け取ったデバッグのヒントで説明されているように、予期した出力が生成されるようです

リモートデスクトップをPCからラップトップに接続してみますlocalhost:60666。ユーザー名とパスワードの入力を求められ、[OK]をクリックすると、ラップトップの現在のセッションがロックされ(デスクトップではなくラップトップのウェルカム画面が表示されます)、リモートデスクトップ画面に「ようこそ」メッセージが表示されます。真っ黒になるだけです。切断されず、エラーも発生せず、リモートデスクトップ画面でアクションを実行できません。Windows XPラップトップで同じ設定を試しましたが、同じ現象が発生しています。60666以外のポートも使用しようとしましたが、何も変わりませんでした。誰かが私が間違っていることを知っていますか?


更新:@jwindersで指摘されているようにtelnet PC 3389、Linuxサーバーから直接実行することはできません。Windowsファイアウォールには、ポート3389でのすべての接続を許可するルールがあるため、何がそれをブロックしているのかわかりません。幸い、LinuxマシンからPCへのSSHトンネルを作成できますssh 3389:localhost:3389 'domain\user'@PC


私はその時点で真剣にGoToMyPCを使用します。
ewwhite 2012

1
@ewwhite私が説明した設定を使用できない理由は何もありません。より単純なソリューション(別のサードパーティを必要とする)がある場合でも、これは興味深い課題だと思います。
Mihai Todor

1
これはvey ld postですが、問題はまだ存在しており、すべての回答が要点を逃しているように見えるのは非常にイライラします。接続は開始できますが、開始後1秒で切断されます。「rdp経由でログインするとその接続が中断されるというコメントは、観察された内容と一致しているように見えますが、その理由には答えず、解決策も提案していません。
rhermans

回答:


3

私は今日、同じ黒い画面に遭遇し、クライアントとしてパテを使用して、自分で切断の問題を解決しました。私は最終的に解決策を見つけました。

パテからbitviseトンネルに切り替えS2C、次の設定で接続をセットアップしました。

listen if:0.0.0.0
listen port:13389
destination host:localhost
dest port:3389

偶然かもしれませんが、私は自分のサーバーでbitvise sshサーバーを使用しているので、これは同じベンダーが作成した2つの製品の組み合わせとしてはちょうど良いかもしれません。これが他の人の問題を解決できれば素晴らしいと思います。

ちなみに、私はこれらの連中とは何の関係もありません。


2

SSHトンネルに問題はありません。PCのlocalhost:60666に接続すると、ラップトップのlocalhost:3389に到達します。また、ログイン画面が表示されるという事実は、この評価を裏付けるものです。

空白の画面で少しグーグルすると、このマイクロソフトナレッジベースの記事http://support.microsoft.com/kb/555840に移動します。可能性のあるMTUサイズの不一致が原因で、画面に何も表示されない可能性があることを示しています。

サーバー、クライアント、およびネットワーク機器が「MTU」サイズを使用していることを確認します。

ほとんどのWindowsマシンはデフォルトで1300のMTUを使用しますが、ほとんどのLinuxボックスは1500(ジャンボフレームを考慮せず、LANの最大許容値)を持っています)。これらを低くして断片化を減らすことができます。

以下も参照してください。


1
先端をありがとう、しかし、残念ながら、それはトリックをしません。私のラップトップとPCの両方のMTUは1500(netsh interface ipv4 show subinterfaces)に設定されておりping linux_server -f -l 1472、両方のマシンで成功します。テストとして、PCのMTUを1300に設定しようとしましたが、効果がありませんでした。私もラップトップでそれを変更しようとしましたが、役に立たなかった:(この問題をデバッグするための「より賢い」方法があるかどうか疑問に思っています...
Mihai Todor

1

VPNの方が適切ではないでしょうか。OpenVPNは設定が非常に簡単です。証明書の作成プロセスをガイドするサンプル設定といくつかのリンクを次に示します。

仲介者をホストとして構成するだけで、ゲストはダイヤルインして相互に通信できます。

apt-get install openvpn
mkdir /etc/openvpn/easy-rsa
mkdir -p /etc/openvpn/ccd/client_server
touch /etc/openvpn/ipp.txt
cp /usr/share/doc/openvpn/examples/easy-rsa/2.0/* /etc/openvpn/easy-rsa
cd /etc/openvpn/easy-rsa
source ./vars
./clean-all
./build-ca 
./build-key-server server
./build-dh
cd /etc/openvpn/easy-rsa/keys
openssl pkcs12 -export -out server.p12 -inkey server.key -in server.crt -certfile ca.crt

次に、新しいファイル/etc/openvpn/client_server.confを作成し、それに以下を入れて、SERVER_IP_ADDRESS適切に変更します

local SERVER_IP_ADDRESS
port 8443
proto udp
dev tun
ca /etc/openvpn/easy-rsa/keys/ca.crt
pkcs12 /etc/openvpn/easy-rsa/keys/server.p12
dh /etc/openvpn/easy-rsa/keys/dh2048.pem
ifconfig-pool-persist /etc/openvpn/ipp.txt
server 192.168.100.0 255.255.255.0
client-config-dir /etc/openvpn/ccd/client_server
ccd-exclusive
keepalive 10 120
comp-lzo
persist-key
persist-tun
status /var/log/openvpn-status.log
verb 3
reneg-sec 0
client-to-client

次に、接続するユーザーごとにキーを作成し、ccdディレクトリに構成ファイルを作成します

./build-key-pkcs12 user1@domain.com
echo "ifconfig-push 192.168.100.2 255.255.255.0" > /etc/openvpn/ccd/client_server/user1@domain.com

接続ごとに使用できるアドレスは2つ(サーバーとクライアント)しかないため、IPアドレスは/ 30サブネット(http://www.subnet-calculator.com/cidr.phpを参照)に適している必要があります。したがって、次に利用可能なクライアントIPは192.168.100.6になります。

次に、接続しているユーザーごとに静的IPがあります。

次にthe user1@domain.com.p12、エンドユーザーにファイルを提供し、次の構成ファイルを使用します

client
dev tun
proto udp
remote SERVER_IP_ADDRESS 8443
pkcs12 user1@domain.com.p12
resolv-retry infinite
nobind
ns-cert-type server
comp-lzo
verb 3
reneg-sec 0

1
ええ、そうです、これでうまくいくかもしれませんが、Linuxボックスで必要なアクセス権を持っていないため、インストールすることはできません。
Mihai Todor 2012

1

ユーザーアカウント内で(putty.exeなどのプログラムを使用して)sshセッションを実行している場合、rdp経由でログインしようとすると、その接続が中断され、rdpセッションが切断されます。あなたがする必要があるのは、中断されないサービスとしてsshトンネルを実行することです。


1
面白い。私はそのセットアップにアクセスできなくなったので、私はあなたの理論をテストすることができませんが、同じ問題に直面している他の人々のためにこれについていくつかの追加の詳細を取得するとよいでしょう。あなたの主張について何か参考資料はありますか?Puttyによって接続が中断されるとはどういう意味ですか?
Mihai Todor 2015年

0

あなたはあなたのラップトップからすべての設定を行うことができると思います

ラップトップのLinuxボックスへのパテ接続をセットアップします。次に、「接続」>「SSH」>「トンネル」で、「ソースポート」フィールドに60666を入力し、「ローカル」ラジオボタンが選択されていることを確認します。「宛先」に、win7-box-name-or-ip:3389と入力します。

それをすべて保存すれば、linux-boxへのパテセッションを開くことができるはずです。これにより、ローカルホスト(ラップトップ):60666からwin7:3389へのトラフィックを転送するトンネルが自動的に作成されます。

コマンドラインでこれを行っている場合は、次のようになります

ssh -L60666:win7:3389 linux-box

1
だから、見てみましょう...この構成では、ポート3389をPCからラップトップのポート60666に転送する必要があります。ただし、これがどのように機能するのかはわかりません。また、いずれにしても、ラップトップでリモートデスクトップを実行することはできません...トンネル。
Mihai Todor

このconfでは、ラップトップでlocalhost:60666にrdpできませんか?
jwinders

いいえ、機能しません。
ミハイトドール

1
それはうまくいきません。私ができる唯一の方法は、最初にLinuxボックスからPCへのトンネルを確立し、ssh 3389:localhost:3389 'domain\user'@PC次にLinuxボックスでトンネルを確立することですtelnet localhost 3389
Mihai Todor

1
それは興味深い点ですが、何がそれを妨げているのか理解できません。Windowsファイアウォールには、ドメインからのポート3389でのすべての接続を明示的に許可するルールがあります。
Mihai Todor

0

すべてのユーザーがマシンから完全にログアウトされない限り、資格情報を入力すると空白の画面が表示されることがわかりました。したがって、必ずログオフしてください。


2
試してみましたが、まだうまくいきません:(
Mihai Todor
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.