SSH Tunnel สำหรับ Remote Desktop ผ่านทาง Intermediary Server Part II


10

ก่อนหน้านี้ฉันถามวิธีกำหนดค่า SSH 2 อุโมงค์โดยใช้เซิร์ฟเวอร์ตัวกลางเพื่อเรียกใช้เดสก์ท็อประยะไกลผ่านทางพวกเขาและฉันจัดการเพื่อให้ทำงานได้ ตอนนี้ฉันกำลังพยายามทำสิ่งเดียวกันโดยใช้เครื่องเดียวกัน แต่กลับกัน นี่คือการตั้งค่า:

  1. พีซี Windows 7 ในเครือข่ายส่วนตัวนั่งหลังไฟร์วอลล์
  2. การเข้าถึงเซิร์ฟเวอร์ Linux สาธารณะซึ่งมีการเข้าถึงพีซี
  3. แล็ปท็อป Windows 7 ที่บ้านซึ่งฉันต้องการใช้ Remote Desktop จากพีซี

R60666 localhost:3389ผมใช้สีโป๊วแล็ปท็อปเพื่อสร้างอุโมงค์กลับจากมันไปยังเซิร์ฟเวอร์ลินุกซ์:

L60666 localhost:60666ผมใช้สีโป๊วบนเครื่องพีซีที่จะสร้างอุโมงค์ปกติจากมันไปยังเซิร์ฟเวอร์ลินุกซ์:

ฉัน SSH ไปตัด Linux และผมทำงาน Telnet localhost 60,666 และดูเหมือนว่าจะผลิตออกคาดว่าตามที่อธิบายไว้ในเคล็ดลับการแก้จุดบกพร่องที่ฉันได้รับที่นี่

ฉันพยายามที่จะเชื่อมต่อใช้ Remote Desktop localhost:60666จากเครื่องคอมพิวเตอร์แล็ปท็อป: มันถามชื่อผู้ใช้และรหัสผ่านของฉันฉันคลิกตกลงและล็อคเซสชันปัจจุบันของฉันบนแล็ปท็อป (ดังนั้นฉันเห็นหน้าจอต้อนรับบนแล็ปท็อปแทนเดสก์ทอปของฉัน) จะแสดงข้อความ "ยินดีต้อนรับ" ในหน้าจอเดสก์ท็อประยะไกล มันแค่เป็นสีดำ ไม่ได้ตัดการเชื่อมต่อไม่มีข้อผิดพลาดและฉันไม่สามารถดำเนินการใด ๆ ในหน้าจอเดสก์ท็อประยะไกล ฉันลองตั้งค่าแบบเดียวกันกับแล็ปท็อป Windows XP และฉันพบอาการเดียวกัน ฉันพยายามใช้พอร์ตที่แตกต่างจาก 60666 แต่ไม่มีอะไรเปลี่ยนแปลง ใครบ้างมีความคิดว่าฉันทำอะไรผิดหรือเปล่า?


อัปเดต : ตามที่ระบุโดย @jwinders ฉันไม่สามารถเรียกใช้telnet PC 3389จากเซิร์ฟเวอร์ Linux โดยตรง เนื่องจาก Windows Firewall มีกฎที่อนุญาตการเชื่อมต่อทั้งหมดที่พอร์ต 3389 ฉันจึงไม่รู้ว่ากำลังบล็อกอะไร โชคดีที่ฉันสามารถสร้างอุโมงค์ SSH จากเครื่อง Linux ไปยังพีซีssh 3389:localhost:3389 'domain\user'@PCได้


ฉันแค่ใช้GoToMyPCอย่างจริงจังณ จุดนั้น
ewwhite

1
@white ฉันไม่เห็นเหตุผลใด ๆ ที่ฉันไม่สามารถใช้การตั้งค่าที่ฉันอธิบายได้ แม้ว่าจะมีวิธีแก้ปัญหาที่ง่ายกว่า (ที่ต้องเกี่ยวข้องกับบุคคลที่สามอื่น) ฉันคิดว่านี่เป็นความท้าทายที่น่าสนใจ
หมดเวลา Todor

1
นี่คือการโพสต์ ld vey แต่ปัญหายังคงมีอยู่และมันค่อนข้างน่าผิดหวังที่คำตอบทั้งหมดดูเหมือนจะพลาดจุด การเชื่อมต่อสามารถเริ่มต้นได้ แต่จะหยุดลงชั่วขณะหนึ่งหลังจากที่เริ่มทำงาน ความคิดเห็นที่"การเข้าสู่ระบบผ่าน rdp จะขัดขวางการเชื่อมต่อนั้น"ดูเหมือนจะสอดคล้องกับสิ่งที่สังเกต แต่ไม่ตอบว่าทำไมและไม่แนะนำวิธีแก้ปัญหา
rhermans

คำตอบ:


3

ฉันวิ่งเข้าไปในหน้าจอสีดำ + ปลดปัญหาตัวเองวันนี้โดยใช้สีโป๊วเป็นลูกค้าของฉัน ฉันหาทางออกได้ในที่สุด

ฉันเปลี่ยนจาก putty เป็นbitvise tunierและตั้งค่าการS2Cเชื่อมต่อด้วยการตั้งค่าต่อไปนี้:

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

โอกาสที่ฉันจะใช้มันฉันใช้ bitvise ssh บนเซิร์ฟเวอร์ของฉันดังนั้นนี่อาจเป็นการรวมกันอย่างมีความสุขสำหรับสองผลิตภัณฑ์ที่ทำโดยผู้ขายรายเดียวกัน มันจะดีถ้าแก้ปัญหาให้คนอื่น

สำหรับบันทึกฉันไม่ได้มีส่วนเกี่ยวข้องกับคนเหล่านี้ แต่อย่างใด


2

ฉันไม่เห็นอะไรผิดปกติกับอุโมงค์ SSH ของคุณ การเชื่อมต่อกับ localhost: 60666 บนพีซีควรสิ้นสุดที่ localhost: 3389 บนแล็ปท็อป และความจริงที่คุณได้รับหน้าจอเข้าสู่ระบบยืนยันการประเมินนี้

บิตของ googling บนหน้าจอว่างเปล่าได้รับฉันไปยังบทความฐานความรู้ของ Microsoft นี้: http://support.microsoft.com/kb/555840 มันระบุว่าหน้าจอว่างเปล่าอาจเนื่องจากขนาดไม่ตรงกันของ MTU ที่เป็นไปได้:

สิ่งที่เซิร์ฟเวอร์ลูกค้าและอุปกรณ์เครือข่ายใช้ขนาด "MTU"

เมื่อพิจารณาถึงจำนวนฮ็อพเครือข่ายไฟร์วอลล์และสิ่งที่มีคุณการกระจายตัวของแพ็คเก็ตค่อนข้างเป็นไปได้ :) เครื่อง Windows ส่วนใหญ่ใช้ MTU 1300 โดยค่าเริ่มต้นในขณะที่กล่อง Linux ส่วนใหญ่มี 1500 (สูงสุดที่อนุญาตสำหรับ LAN โดยไม่พิจารณากรอบจัมโบ้ ) คุณสามารถลองลดค่าเหล่านี้เพื่อลดการกระจายตัว

ดูสิ่งนี้ด้วย:


1
ขอบคุณสำหรับเคล็ดลับ แต่น่าเสียดายที่มันไม่ได้ทำเคล็ดลับ MTU บนทั้งแล็ปท็อปและพีซีของฉันตั้งไว้ที่ 1500 ( netsh interface ipv4 show subinterfaces) และping linux_server -f -l 1472สำเร็จจากทั้งสองเครื่อง เช่นเดียวกับการทดสอบฉันพยายามตั้งค่า 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 dir

./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

ที่อยู่ IP ต้องเหมาะสมสำหรับ / 30 subnet (ดูhttp://www.subnet-calculator.com/cidr.php ) เนื่องจากมีเพียง 2 ที่อยู่ (เซิร์ฟเวอร์และไคลเอนต์) ต่อการเชื่อมต่อ ดังนั้น 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 เพื่อติดตั้งสิ่งของ: (ถึงกระนั้นฉันก็พบว่าสิ่งที่น่าผิดหวังอย่างยิ่งเพราะมันทำงานในทิศทางเดียวและล้มเหลวในทิศทางตรงกันข้าม
หมดเวลา Todor

1

หากคุณใช้เซสชัน ssh ภายในบัญชีผู้ใช้ (โดยใช้โปรแกรมเช่น putty.exe) เมื่อคุณพยายามเข้าสู่ระบบผ่าน rdp ระบบจะขัดขวางการเชื่อมต่อที่ทำให้เซสชัน rdp หยุดทำงาน สิ่งที่คุณต้องทำคือเรียกใช้ ssh tunnel เป็นบริการที่จะไม่ถูกขัดจังหวะ


1
น่าสนใจ ฉันไม่สามารถเข้าถึงการตั้งค่านั้นได้อีกดังนั้นฉันจะไม่สามารถทดสอบทฤษฎีของคุณได้ แต่มันจะดีถ้าได้รับรายละเอียดเพิ่มเติมเกี่ยวกับเรื่องนี้สำหรับคนอื่นที่กำลังเผชิญปัญหาเดียวกัน คุณมีการอ้างอิงสำหรับการเรียกร้องของคุณ? คุณหมายถึงอะไรโดยการเชื่อมต่อที่ถูกขัดขวางโดย Putty?
หมดเวลา Todor

0

ฉันคิดว่าคุณสามารถทำทุกอย่างจากแล็ปท็อปของคุณ

ตั้งค่าการเชื่อมต่อที่ฉาบไปยังกล่อง linux บนแล็ปท็อปของคุณ จากนั้นใน 'การเชื่อมต่อ'> 'SSH'> 'อุโมงค์' ใส่ 60666 ในฟิลด์ 'พอร์ตต้นทาง' และตรวจสอบให้แน่ใจว่าได้เลือกปุ่มตัวเลือก Local Local ใน 'ปลายทาง' คุณป้อน win7-box-name-or-ip: 3389

บันทึกทั้งหมดนั้นและมันจะช่วยให้คุณสามารถเปิดเซสชันที่มีสีโป๊วให้ linux-box ซึ่งจะสร้างทราฟฟิกที่ส่งต่อไปยัง localhost โดยอัตโนมัติ (แล็ปท็อปของคุณ): 60666 ถึง win7: 3389

หากคุณกำลังทำสิ่งนี้ในบรรทัดคำสั่งมันควรจะเป็นอย่างนั้น

ssh -L60666:win7:3389 linux-box

1
ถ้าอย่างนั้นเรามาดู ... การกำหนดค่านี้ควรส่งต่อพอร์ต 3389 จากพีซีไปยังพอร์ต 60666 บนแล็ปท็อป ฉันไม่เห็นว่ามันจะใช้งานได้อย่างไรและไม่ว่าในกรณีใดมันไม่อนุญาตให้ฉันทำเดสก์ท็อประยะไกลบนแล็ปท็อป ... เท่าที่ฉันบอกไม่ได้มันต้องใช้ 2 อุโมงค์
หมดเวลา Todor

ด้วยความเชื่อมั่นนี้คุณไม่สามารถ rdp ไปยัง localhost: 60666 บนแล็ปท็อปของคุณ?
jwinders

ไม่มันไม่ทำงาน
หมดเวลา Todor

1
ไม่ได้ผล วิธีเดียวที่ฉันสามารถทำได้คือการสร้างอุโมงค์จากกล่องลินุกซ์ไปยังพีซีssh 3389:localhost:3389 'domain\user'@PCและจากนั้นทำtelnet localhost 3389บนกล่องลินุกซ์
หมดเวลา Todor

1
นั่นเป็นประเด็นที่น่าสนใจ แต่ฉันไม่แน่ใจว่าฉันเข้าใจสิ่งที่ปิดกั้น Windows Firewall มีกฎที่อนุญาตการเชื่อมต่อทั้งหมดบนพอร์ต 3389 จากโดเมนอย่างชัดเจน
หมดเวลา Todor

0

ฉันพบว่าหากผู้ใช้ทั้งหมดไม่ได้ลงชื่อออกจากเครื่องอย่างสมบูรณ์ฉันจะได้รับหน้าจอว่างเปล่าหลังจากป้อนข้อมูลประจำตัว ดังนั้นตรวจสอบให้แน่ใจว่าคุณออกจากระบบเสมอ


2
ลองดี แต่ก็ยังไม่มีโชค :(
Mihai Todor
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.