중개 서버 파트 II를 통한 원격 데스크탑 용 SSH 터널


10

나는 이전에 질문 그들을 통해 원격 데스크톱을 실행하기 위해 중간 서버를 사용하여 2 개 SSH 터널을 구성하는 방법과 나는 그것이 작동하도록 관리. 이제 동일한 머신을 사용하여 동일한 작업을 시도하지만 반대 순서로 수행하려고합니다. 설정은 다음과 같습니다.

  1. 방화벽 뒤에 앉아있는 개인 네트워크의 Windows 7 PC.
  2. PC에 액세스 할 수있는 공개 액세스 Linux 서버.
  3. 집에서 PC로 원격 데스크톱을 수행하려는 Windows 7 랩톱

랩톱에서 Putty를 사용하여 Linux 서버에서 역방향 터널을 만듭니다 R60666 localhost:3389.

PC에서 Putty를 사용하여 Linux 서버에서 일반 터널을 만듭니다 L60666 localhost:60666.

Linux 서버에 SSH를 연결하고 telnet localhost 60666을 실행하면 여기에서 받은 디버깅 팁에 설명 된 것처럼 예상 출력을 생성하는 것 같습니다 .

PC에서 랩톱으로 원격 데스크톱을 연결하려고합니다 localhost:60666. 사용자 이름과 암호를 묻고 확인을 클릭하고 랩톱에서 현재 세션을 잠급니다 (따라서 데스크톱 대신 랩톱에 시작 화면이 표시됨). 원격 데스크톱 화면에 "환영합니다"메시지가 표시됩니다. 그냥 검은 색이됩니다. 연결이 끊어지지 않고 오류가 발생하지 않으며 원격 데스크톱 화면에서 작업을 수행 할 수 없습니다. Windows XP 랩톱에서 동일한 설정을 시도했지만 동일한 증상이 나타납니다. 또한 60666과 다른 포트를 사용하려고 시도했지만 아무것도 변경되지 않았습니다. 내가 뭘 잘못하고 있는지 아는 사람이 있습니까?


업데이트 : @jwinders가 지적했듯이 telnet PC 3389Linux 서버에서 직접 실행할 수 없습니다 . Windows 방화벽에는 포트 3389의 모든 연결을 허용하는 규칙이 있기 때문에 무엇이 차단되는지 잘 모릅니다. 다행히도 Linux 컴퓨터에서 PC로 SSH 터널을 만들 수 있습니다 ssh 3389:localhost:3389 'domain\user'@PC.


그 시점에서 GoToMyPC 를 진지하게 사용하고 싶습니다 .
ewwhite

1
@ewwhite 설명 된 설정을 사용할 수없는 이유는 없습니다. 더 간단한 솔루션이 있더라도 (다른 타사와 관련이 필요함) 흥미로운 도전이라고 생각합니다.
Mihai Todor

1
이것은 비정형 게시물이지만 문제는 여전히 존재하며 모든 답변이 요점을 놓친 것 같습니다. 연결을 시작할 수는 있지만 시작한 후 1 초 후에 끊어집니다. "rdp를 통해 로그인하면 연결이 끊어 질 것" 이라는 의견 은 관찰 된 내용과 일관된 것처럼 보이지만 해결책을 제시하지 않는 이유와 대답을 제시하지는 않습니다.
rhermans

답변:


3

퍼티를 클라이언트로 사용하여 오늘 같은 검은 화면 + 연결 끊기 문제가 발생했습니다. 나는 결국 해결책을 찾았습니다 .

나는에 퍼티로 전환 는 Bitvise의 Tunnelier가 , 및 설정 S2C다음 설정과 관련하여 :

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

우연히도 서버에서 bitvise ssh 서버를 사용하고 있으므로 동일한 공급 업체가 만든 두 제품의 행복한 조합 일 수 있습니다. 이것이 다른 사람들의 문제를 해결한다면 좋을 것입니다.

기록을 위해, 나는이 사람들과 어떤 식 으로든 관계가 없습니다.


2

SSH 터널에 문제가 없습니다. PC의 localhost : 60666에 연결하면 노트북의 localhost : 3389에 연결됩니다. 그리고 로그인 화면을 얻는다는 사실이이 평가를 확인시켜줍니다.

빈 화면에서 약간의 인터넷 검색을 통해이 Microsoft 기술 자료 문서 ( http://support.microsoft.com/kb/555840)를 볼 수 있습니다. 가능한 MTU 크기 불일치로 인해 빈 화면이 나타날 수 있음을 나타냅니다.

서버, 클라이언트 및 네트워크 장비가 "MTU"크기를 사용하는지 확인하십시오.

상당한 양의 네트워크 홉, 방화벽 및 무엇을 감안할 때, 패킷 조각화는 가능성이 높습니다. ). 이것을 낮추어 조각화를 줄일 수 있습니다.

또한보십시오:


1
팁 주셔서 감사하지만 불행히도 트릭을 수행하지 않습니다. 랩톱과 PC의 MTU가 1500 ( netsh interface ipv4 show subinterfaces)으로 설정되어 있고 ping linux_server -f -l 1472두 컴퓨터에서 모두 성공합니다. 테스트와 마찬가지로 PC의 MTU를 1300으로 설정하려고 시도했지만 도움이되지 않았습니다. ...이 문제를 디버깅 할 수있는 "스마트"방법이 있는지 또한뿐만 아니라 노트북에 변경하려고했으나 아무 소용 :(에 궁금
미하이 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

1

사용자 계정 내에서 ssh 세션을 실행중인 경우 (putty.exe와 같은 프로그램 사용) rdp를 통해 로그인하려고하면 해당 연결이 중단되어 rdp 세션이 중단됩니다. 당신이해야 할 일은 중단되지 않는 서비스로 ssh 터널을 실행하는 것입니다.


1
흥미 롭군 더 이상 해당 설정에 액세스 할 수 없으므로 이론을 테스트 할 수는 없지만 같은 문제에 직면 한 다른 사람들을 위해 이에 대한 추가 정보를 얻는 것이 좋습니다. 귀하의 주장에 대한 언급이 있습니까? 퍼티가 연결을 방해한다는 것은 무슨 의미입니까?
Mihai Todor

0

난 당신이 당신의 노트북에서 모든 conf를 할 수 있다고 생각

랩톱의 Linux 상자에 퍼티 연결을 설정하십시오. 그런 다음 'connection'> 'SSH'> 'tunnels'에서 'source port'필드에 60666을 입력하고 Local 라디오 버튼이 선택되어 있는지 확인하십시오. '목적지'에 win7-box-name-or-ip : 3389를 입력하십시오.

모두 저장하면 리눅스 호스트에 퍼티 세션을 열어 로컬 호스트 (노트북)에 터널 전달 트래픽을 자동으로 생성 할 수 있어야합니다 : 60666 to win7 : 3389

커맨드 라인 에서이 작업을 수행하는 경우 다음과 같아야합니다

ssh -L60666:win7:3389 linux-box

1
자, 보자 ...이 구성은 포트 3389를 PC에서 랩톱의 포트 60666으로 전달해야합니다. 그래도 이것이 어떻게 작동하는지 알지 못하며 어떤 경우에는 랩톱에서 원격 데스크톱을 수행 할 수 없습니다 ... 알 수없는 한, 2를 사용하여 수행해야합니다. 터널.
Mihai Todor

이 conf를 사용하면 랩톱에서 localhost : 60666으로 rdp 할 수 없습니까?
jwinders

아니요, 작동하지 않습니다.
Mihai Todor

1
작동하지 않습니다. 내가 할 수있는 유일한 방법은 먼저 Linux 상자에서 PC로 터널을 설정 한 ssh 3389:localhost:3389 'domain\user'@PC다음 telnet localhost 3389Linux 상자에서 수행 하는 것입니다.
Mihai Todor

1
그것은 흥미로운 점이지만, 그것이 무엇을 막고 있는지 잘 모르겠습니다. Windows 방화벽에는 포트 3389의 모든 연결을 도메인에서 명시 적으로 허용하는 규칙이 있습니다.
Mihai Todor

0

모든 사용자가 컴퓨터에서 완전히 로그 아웃하지 않으면 자격 증명을 입력 한 후 빈 화면이 나타납니다. 따라서 항상 로그 오프하십시오.


2
좋은 시도, 그러나 여전히 운이 없다 :(
Mihai Todor
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.