5

Мне нужно найти способ заставить RDP(удаленный рабочий стол) отвечать на определенный порт вместо RHP(случайный высокий порт). Я не спрашиваю, как изменить, какой порт RDP "слушает", а наоборот.

Я пытаюсь установить экспериментальный прямой / обратный туннель SSH между двумя системами. Я использую третью систему в качестве точки разворота, чтобы скрыть свой IP в прямом туннеле. Но я хочу, чтобы система, в которую я удаленно работал через прямой SSH-туннель, отправляла ответ через отдельный обратный SSH туннель на "указанный" порт вместо RHP. Основная идея заключается в том, что я хочу иметь возможность контролировать, какие порты я хочу прослушивать или получать, и я не хочу, чтобы что-либо было случайным. С учетом сказанного здесь приведен снимок моей установки.

Редактировать: все IP-адреса в изображении изменились, что позже запутает, когда вы прочитаете журналы, которые я отредактировал в вопросе. Новые IP-адреса:

  • KGRAVES - 10.0.10.113
  • DEVILSMILK - 10.0.10.121
  • DUCLAW - 10.0.10.120

Как вы можете сказать на последнем шаге, мой сеанс RDP отправляется обратно через обратный туннель SSH как я этого хочу. Итак, у меня есть две трубы для моей сессии RDP . Но он отправляет его обратно на RHP, и я не могу понять, как сказать ему отправить его на определенный порт, например, :44444 .

Кто-нибудь знает как это сделать?

Мне нужно, чтобы это было сделано определенным образом. Это порты, которые я должен использовать. Я уже настроил Duclaw для прослушивания RDP порт 1337 вместо 3389 . Я знаю, что это далеко не самый простой способ сделать это.

Мне нужно, чтобы подключение к удаленному рабочему столу "появлялось", как будто оно исходит от devilsmilk . Но я хочу, чтобы duclaw отправил ответ прямо обратно в kgraves-pc не пройдя через devilsmilk . Таким образом , чтобы kgraves-pc сеанс RDP посылается на localhost , который затем направляется через ssh туннель через devilsmilk к duclaw но RDP пакеты , которые в настоящее время полученные в ответ на это соединение получены непосредственно из Duclaw

Мои команды следующие, и все они выполняются с той же самой консоли CYGWIN ssh на kgraves-pc за исключением подключения mstsc которое я сделал с другого терминала CYGWIN на kgraves-pc:

CNO\kgraves@KGRAVES ~
$ ssh -vg -L 3333:localhost:6666 misfitred@devilsmilk
OpenSSH_6.1p1, OpenSSL 1.0.1c 10 May 2012
debug1: Reading configuration data /etc/ssh_config
debug1: Connecting to devilsmilk [10.0.10.121] port 22.
debug1: Connection established.
debug1: identity file /home/kgraves/.ssh/id_rsa type 1
debug1: identity file /home/kgraves/.ssh/id_rsa-cert type -1
debug1: identity file /home/kgraves/.ssh/id_dsa type -1
debug1: identity file /home/kgraves/.ssh/id_dsa-cert type -1
debug1: identity file /home/kgraves/.ssh/id_ecdsa type -1
debug1: identity file /home/kgraves/.ssh/id_ecdsa-cert type -1
debug1: Remote protocol version 2.0, remote software version OpenSSH_5.3
debug1: match: OpenSSH_5.3 pat OpenSSH_5*
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_6.1
key_read: uudecode devilsmilk ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAwVZRlnAgPRPxTx           cbTPALg5XPpOnAMhJabQ3Dv/7a95eqe5l7XnKRciYQZ41B61DRgXCzC/M9ObknMR79zG0mkSl+jQTGJ7           klol7nw0+U1dNFknv4fOn+YGAsqECclWEow3OK5xRcla5eBekRGWjrZ7Wbs4F3FeKGQNqU/OuGvdSaQb           3nqgLPGTZfRhNtykQvpNzXw5cjO7XvM0BBv9di4JblLx9Fk3iq2KwdgWmK9uFDPYjU1gkHR8hk+bns1t           16KFcyDKnzhR1CblU6JT/wlBtnFa11no1UJBEHC2UQy8trwkMU6NqUt0X+D/XqW5F6+uWNc/dY97CCky           9HdfWNGQ==
 failed
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: server->client aes128-ctr hmac-md5 none
debug1: kex: client->server aes128-ctr hmac-md5 none
debug1: SSH2_MSG_KEX_DH_GEX_REQUEST(1024<1024<8192) sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_GROUP
debug1: SSH2_MSG_KEX_DH_GEX_INIT sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_REPLY
debug1: Server host key: RSA b5:d6:eb:64:50:2f:40:04:32:10:bb:4f:a8:d3:f5:37
key_read: uudecode devilsmilk ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAwVZRlnAgPRPxTx           cbTPALg5XPpOnAMhJabQ3Dv/7a95eqe5l7XnKRciYQZ41B61DRgXCzC/M9ObknMR79zG0mkSl+jQTGJ7           klol7nw0+U1dNFknv4fOn+YGAsqECclWEow3OK5xRcla5eBekRGWjrZ7Wbs4F3FeKGQNqU/OuGvdSaQb           3nqgLPGTZfRhNtykQvpNzXw5cjO7XvM0BBv9di4JblLx9Fk3iq2KwdgWmK9uFDPYjU1gkHR8hk+bns1t           16KFcyDKnzhR1CblU6JT/wlBtnFa11no1UJBEHC2UQy8trwkMU6NqUt0X+D/XqW5F6+uWNc/dY97CCky           9HdfWNGQ==
 failed
The authenticity of host 'devilsmilk (10.0.10.121)' can't be established.
RSA key fingerprint is b5:d6:eb:64:50:2f:40:04:32:10:bb:4f:a8:d3:f5:37.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'devilsmilk' (RSA) to the list of known hosts.
debug1: ssh_rsa_verify: signature correct
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: Roaming not allowed by server
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey,password,keyboard-interacti           ve
debug1: Next authentication method: publickey
debug1: Offering RSA public key: /home/kgraves/.ssh/id_rsa
debug1: Authentications that can continue: publickey,password,keyboard-interacti           ve
debug1: Trying private key: /home/kgraves/.ssh/id_dsa
debug1: Trying private key: /home/kgraves/.ssh/id_ecdsa
debug1: Next authentication method: keyboard-interactive
Password:
debug1: Authentication succeeded (keyboard-interactive).
Authenticated to devilsmilk ([10.0.10.121]:22).
debug1: Local connections to *:3333 forwarded to remote address localhost:6666
debug1: Local forwarding listening on :: port 3333.
debug1: channel 0: new [port listener]
debug1: Local forwarding listening on 0.0.0.0 port 3333.
debug1: channel 1: new [port listener]
debug1: channel 2: new [client-session]
debug1: Requesting no-more-sessions@openssh.com
debug1: Entering interactive session.
Last login: Wed Jan 30 16:13:02 2013 from kgraves.cno.local
[misfitred@devilsmilk ~]$ ssh -vg -L 6666:localhost:1337 kgraves@duclaw
OpenSSH_5.3p1, OpenSSL 1.0.0-fips 29 Mar 2010
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: Connecting to duclaw [10.0.10.120] port 22.
debug1: Connection established.
debug1: identity file /home/misfitred/.ssh/id_rsa type 1
debug1: Remote protocol version 2.0, remote software version OpenSSH_6.1
debug1: match: OpenSSH_6.1 pat OpenSSH*
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_5.3
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: server->client aes128-ctr hmac-md5 none
debug1: kex: client->server aes128-ctr hmac-md5 none
debug1: SSH2_MSG_KEX_DH_GEX_REQUEST(1024<1024<8192) sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_GROUP
debug1: SSH2_MSG_KEX_DH_GEX_INIT sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_REPLY
debug1: Host 'duclaw' is known and matches the RSA host key.
debug1: Found key in /home/misfitred/.ssh/known_hosts:3
debug1: ssh_rsa_verify: signature correct
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey,password,keyboard-interacti           ve
debug1: Next authentication method: publickey
debug1: Offering public key: /home/misfitred/.ssh/id_rsa
debug1: Authentications that can continue: publickey,password,keyboard-interacti           ve
debug1: Next authentication method: keyboard-interactive
debug1: Authentications that can continue: publickey,password,keyboard-interacti           ve
debug1: Next authentication method: password
kgraves@duclaw's password:
debug1: Authentication succeeded (password).
debug1: Local connections to *:6666 forwarded to remote address localhost:1337
debug1: Local forwarding listening on 0.0.0.0 port 6666.
debug1: channel 0: new [port listener]
debug1: Local forwarding listening on :: port 6666.
debug1: channel 1: new [port listener]
debug1: channel 2: new [client-session]
debug1: Requesting no-more-sessions@openssh.com
debug1: Entering interactive session.
debug1: Sending environment.
debug1: Sending env LANG = en_US.UTF-8
Last login: Wed Jan 30 15:55:29 2013 from devilsmilk.cno.local
"tty" option detected in CYGWIN environment variable.
CYGWIN=tty is no longer supported.  Please remove it from your
CYGWIN environment variable and use a terminal emulator like mintty,
xterm, or rxvt.

kgraves@DUCLAW ~
$ ssh -vg -R 3333:devilsmilk:6666 kgraves@kgraves
OpenSSH_6.1p1, OpenSSL 1.0.1c 10 May 2012
debug1: Reading configuration data /etc/ssh_config
debug1: Connecting to kgraves [10.0.10.113] port 22.
debug1: Connection established.
debug1: identity file /home/kgraves/.ssh/id_rsa type 1
debug1: identity file /home/kgraves/.ssh/id_rsa-cert type -1
debug1: Remote protocol version 2.0, remote software version OpenSSH_6.1
debug1: match: OpenSSH_6.1 pat OpenSSH*
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_6.1
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: server->client aes128-ctr hmac-md5 none
debug1: kex: client->server aes128-ctr hmac-md5 none
debug1: sending SSH2_MSG_KEX_ECDH_INIT
debug1: expecting SSH2_MSG_KEX_ECDH_REPLY
debug1: Server host key: ECDSA de:1c:37:d7:84:0b:f8:f9:5e:da:11:49:57:4f:b8:f1
debug1: Host 'kgraves' is known and matches the ECDSA host key.
debug1: Found key in /home/kgraves/.ssh/known_hosts:3
debug1: ssh_ecdsa_verify: signature correct
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: Roaming not allowed by server
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey,password,keyboard-interacti           ve
debug1: Next authentication method: publickey
debug1: Offering RSA public key: /home/kgraves/.ssh/id_rsa
debug1: Authentications that can continue: publickey,password,keyboard-interacti           ve
debug1: Next authentication method: keyboard-interactive
debug1: Authentications that can continue: publickey,password,keyboard-interacti           ve
debug1: Next authentication method: password
kgraves@kgraves's password:
debug1: Authentication succeeded (password).
Authenticated to kgraves ([10.0.10.113]:22).
debug1: Remote connections from LOCALHOST:3333 forwarded to local address devils           milk:6666
debug1: channel 0: new [client-session]
debug1: Requesting no-more-sessions@openssh.com
debug1: Entering interactive session.
debug1: remote forward failure for: listen 3333, connect devilsmilk:6666
Warning: remote port forwarding failed for listen port 3333
debug1: All remote forwarding requests processed
Last login: Wed Jan 30 16:21:12 2013 from duclaw.cno.local
"tty" option detected in CYGWIN environment variable.
CYGWIN=tty is no longer supported.  Please remove it from your
CYGWIN environment variable and use a terminal emulator like mintty,
xterm, or rxvt.
_____________________________________________________________________________
##From separate CYGWIN Terminal##
CNO\kgraves@KGRAVES ~
$ mstsc /v:localhost:3333 /f

CNO\kgraves@KGRAVES ~
$
_____________________________________________________________________________

kgraves@KGRAVES ~
$ debug1: Connection to port 3333 forwarding to localhost port 6666 requested.
debug1: channel 4: new [direct-tcpip]
debug1: Connection to port 6666 forwarding to localhost port 1337 requested.
debug1: channel 4: new [direct-tcpip]
debug1: channel 4: free: direct-tcpip: listening port 3333 for localhost port 66                          66, connect from ::1 port 49496, nchannels 5
debug1: channel 4: free: direct-tcpip: listening port 6666 for localhost port 13                          37, connect from 127.0.0.1 port 48808, nchannels 5
debug1: Connection to port 3333 forwarding to localhost port 6666 requested.
debug1: channel 4: new [direct-tcpip]
debug1: Connection to port 6666 forwarding to localhost port 1337 requested.
debug1: channel 4: new [direct-tcpip]
$ debug1: channel 3: free: direct-tcpip: listening port 3333 for localhost port 6666, conne               ct from ::1 port 49495, nchannels 5
debug1: channel 3: free: direct-tcpip: listening port 6666 for localhost port 1337, connect                from 127.0.0.1 port 48807, nchannels 5
$

Соединение с удаленным рабочим столом установлено. И, как вы можете видеть, это выглядит так, как будто оно исходит от devilsmilk на duclaw . Но, по словам kgraves-PC он возвращается из Devilsmilk . Так что я раньше думал, что на самом деле не было. Я думал, что Duclaw отправляет сеанс RDP обратно в kgraves по отдельному пути, но оказывается, что это не так. Я не уверен, что это работало в прошлый раз, и у меня была другая установка, или я воображал вещи. Но теперь, когда я все перенастроил и снова запустил и запустил после моей проблемы с моими ssh-серверами, он определенно больше этого не делает.

Это wireshark работающий на kgraves-pc во время сеанса RDP :

Таким образом, моя проблема по-прежнему заключается в том, что я хочу, чтобы Duclaw отправил сеанс RDP обратно в Kgraves-pc через совершенно отдельный обратный туннель. Это то, что мне нужно, и я не могу понять, как это сделать.

Мне нужен не только duclaw чтобы отправить его обратно в отдельный туннель прямо в kgraves-pc без прохождения через devilsmilk но также мне нужно контролировать, в какой эфемерный порт он отправляет его. Я хочу, чтобы он отправил его в порт :44444 вместо случайного эфемерного порта. Он использует :48809 случайно в подробном отладочном ssh распечатанном выше.

Надеюсь, это прояснит ситуацию, если нет ... извините, что сбил вас с толку еще больше.

1 ответ1

3

Запрос

Мне нужно, чтобы подключение к удаленному рабочему столу "появлялось", как будто оно исходит от devilsmilk. Но я хочу, чтобы герцог отправил ответ прямо обратно в kgraves-pc, не пройдя через дьявольское молоко. Таким образом, kgraves-pc сеанс RDP отправляется на локальный узел, который затем пересылается через туннель ssh через devilsmilk в duclaw, но пакеты RDP, которые принимаются в ответ на это соединение, принимаются непосредственно от Duclaw.

Ответ - невозможно из-за особенностей связи TCP

Я не думаю, что это выполнимо, по крайней мере, не только с помощью SSH туннеля.

Давайте посмотрим на поток пакетов, требуемый / запрошенный:

  1. kgraves-pc запускает RDP-запрос к localhost:3333, который является туннелем для devilsmilk:6666
  2. дьявольское молоко:6666 в свою очередь туннель в Дукло:1337
  3. Duclaw:1337 RDP отправляет ответный пакет на kgraves-pc

Вышеуказанный поток пакетов не произойдет, по крайней мере, при нормальных обстоятельствах. Давайте рассмотрим вышеописанный процесс немного подробнее:

  1. kgraves-pc запускает RDP-запрос к localhost:3333, который является туннелем для devilsmilk:6666

    На этом этапе RDP-клиент kgraves-pc ожидает ответного пакета от localhost:3333, больше ничего.

  2. дьявольское молоко:6666 в свою очередь туннель в Дукло:1337

    На этом этапе к RDP-серверу duclaw запрос поступает от localhost(если он есть), и он будет отвечать на него напрямую.

  3. Duclaw:1337 RDP отправляет ответный пакет на kgraves-pc

    Основываясь на (2) выше, этот путь не происходит вообще.

Оригинальный ответ (не то, что ОП хочет)

На kgraves-pc команда SSH с туннелированием для достижения требований OP.

ssh user@devilsmilk -L 3333:localhost:3389 -L 6666:10.0.10.130:3389 -R 23389:localhost:3389

-L 3333:localhost:3389 включить RDP от kgraves-pc для создания дьявольского молока с помощью localhost:3333

-L 6666:10.0.10.130:3389 включить kgraves-pc RDP для установления связи с локальным хостом localhost:6666

-R 23389:localhost:3389 включить RDP Duclaw для kgraves-pc с помощью devilsmilk:23389

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .