เดสก์ท็อประยะไกลผ่านอุโมงค์ย้อนกลับ SSH เพื่อแทนที่ TeamViewer


14

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

นี่คือลักษณะ SSH อุโมงค์ของฉัน:

laptop--->nat--->middleman<--nat<--desktop

ทุกเครื่องใช้ลีนุกซ์ (ส่วนใหญ่เป็น Ubuntu 12.04 หรือ OpenSuse 12.3) ฉันไม่สามารถเปลี่ยนพอร์ตใด ๆ หรือทำการเปลี่ยนแปลงการกำหนดค่าใด ๆ บนเราเตอร์ nat

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

middleman<--nat<--desktop

... นี่คือวิธีการจัดตั้ง:

autossh -M 5234 -N -f -R 1234:localhost:22 user@middleman.com

เกี่ยวกับขานี้:

laptop--->nat--->middleman

ฉันสามารถเชื่อมต่อกับคนกลางดังต่อไปนี้:

me@laptop:~$ ssh -i ~/.ssh/id_rsa admin@middleman  

อย่างไรก็ตามสิ่งที่ฉันต้องทำจริง ๆ ก็คือเชื่อมต่อโดยตรงกับเดสก์ท็อปไม่ใช่คนกลาง เมื่อต้องการทำเช่นนั้นฉันใช้ netcat ("nc") กับคนกลาง จากนี้ปรากฏว่าจำเป็นต้องมี NC ดังนั้นฉันจึงแก้ไขไฟล์กำหนดค่า SSH ของฉันบนแล็ปท็อปเพื่อใช้ ProxyCommand และ nc:

me@laptop:~/.ssh$ nano config

เนื้อหาคือ:

Host family_desktops
  ProxyCommand ssh middleman_fqdn nc localhost %p
  User admin
  PasswordAuthentication no
  IdentityFile ~/.ssh/my_id_rsa

ที่ไหนmiddleman_fqdnเหมือน "middleman.com"

จากนั้นฉันเพิ่งเชื่อมต่อกับ "เดสก์ท็อป" ในขั้นตอนเดียว:

me@laptop:~$ ssh family_desktops -p 1234

(ฉันได้รับการทำงานตามความช่วยเหลือที่นี่และที่นี่และคำถามที่เกี่ยวข้องอื่น ๆ ที่ฉันถามฉันได้ถามคำถามมากมายในหัวข้อนี้เพราะฉันได้ปล้ำกับมันเป็นเวลาหลายสัปดาห์)

ด้วยการเชื่อมต่อ SSH desktopนี้ฉันถึงเปลือกทำงานอย่างเต็มที่บนคอมพิวเตอร์ของฉันที่มีป้ายกำกับ สมบูรณ์

ตอนนี้ฉันต้องการโซลูชันเดสก์ท็อประยะไกลที่มีลักษณะคล้าย VNC (หรือ TeamViewer) เหนืออุโมงค์ SSH นี้ อย่างไร?

นี่คือสิ่งที่ฉันได้ลองไปแล้ว:

คนกลาง <- NAT <- สก์ท็อป

autossh -M 5235 -N -f -R 1235:localhost:5901 user@middleman.com

ด้วยการเชื่อมต่อที่จัดตั้งขึ้น:

x11vnc -autoport 5901 

ฉันดูเพื่อให้แน่ใจว่าเชื่อมต่อกับพอร์ต 5901 ซึ่งทำ

แล็ปท็อป ---> NAT ---> คนกลาง <- NAT <- สก์ท็อป

แล็ปท็อป ~ / .ssh / config:

Host family_desktops
  ProxyCommand ssh -NL 5901:localhost:1235 middleman.com nc localhost 1235
  User admin
  PasswordAuthentication no
  IdentityFile ~/.ssh/my_id_rsa

การตั้งค่าอุโมงค์:

me@laptop:~$ sudo ssh family_desktops

ลูกค้า VNC:

connect to localhost:5901

สิ่งนี้ทำให้เกิดข้อผิดพลาดของ "เซิร์ฟเวอร์ไม่พบ"

ฉันได้ลองใช้งานชุดรูปแบบจำนวนมากบน ProxyCommand ไม่ประสบความสำเร็จ เห็นได้ชัดว่าฉันคาดเดาเกี่ยวกับพารามิเตอร์ที่ควรอยู่ใน ProxyCommand และที่ควรจะอยู่ในบรรทัดคำสั่ง ssh ฉันเห็นปัญหาที่อาจเกิดขึ้นกับการตั้งค่าของฉัน แต่ฉันไม่สามารถทราบได้ว่าอะไรจะทำให้การทำงานทั้งหมด

ป.ล. ตามที่กล่าวมาฉันได้ถามคำถามหลายข้อเกี่ยวกับเรื่องนี้ บางคนนำฉันเข้าใกล้โซลูชันมากขึ้นและสร้างพื้นฐานของคำถามปัจจุบันของฉัน คำถามก่อนอื่นของฉันในหัวข้อนี้เพียงแสดงความไม่รู้และไม่สามารถถามคำถามในรูปแบบที่ถูกต้อง ณ จุดนี้คำถามปัจจุบันนี้แสดงให้เห็นถึงความสามารถที่ดีที่สุดของฉันในการระบุว่าปัญหาของฉันคืออะไรและปัญหาที่ฉันต้องการคืออะไร แต่คำถามอื่น ๆ ของฉันก็ยังคงเปิดอยู่เช่นกัน นี่คือสิ่งที่เกี่ยวข้อง


1
หมายเหตุด้านข้าง: โปรดอย่าใช้ลิงก์"ที่นี่"หรือ"สิ่งนี้" ระบุชื่อที่มีความหมายสำหรับลิงก์ของคุณเช่นชื่อคำถามหรือหน้าเว็บที่คุณเชื่อมโยงไปถึง
Marco

คุณไม่ได้ถามคำถามนี้มาก่อนหรือไม่ unix.stackexchange.com/questions/82255/…
slm

@slm - ดูลิงก์ในคำถามของฉัน นี่เป็นคำถามที่เกี่ยวข้องกับฉัน ฉันยังคงพยายามที่จะบรรลุการแก้ปัญหาและคำถามแต่ละดูเหมือนว่าจะได้รับฉันใกล้ชิด ...
MountainX

ดูเหมือนจะซับซ้อนอย่างไม่น่าเชื่อ ฉันใช้เดสก์ท็อประยะไกลของเครื่อง Windows 8 ของฉันโดย SSH'ing ไปยังเครื่องในเครือข่ายเดียวกันกับที่มีพอร์ตเปิดในไฟร์วอลล์อยู่
ทิม

@ เวลานี้เป็นอุโมงค์ SSH แบบย้อนกลับและเป็นสิ่งจำเป็นเนื่องจากdesktopอยู่หลังเราเตอร์ NAT และlaptopอยู่หลังเราเตอร์ NAT
MountainX

คำตอบ:


3

คุณลองทำขั้นตอนที่สองโดยไม่ทำ nc ได้ไหม? นั่นคือ - ทำ VNC ด้วย -L ​​และ -R ฉันเชื่อว่าปัญหาคือเซสชัน netcat ของคุณกำลังเชื่อมต่อกลับไปที่เปิดอยู่แล้ว ดังนั้นเมื่อทำสิ่ง VNC ไม่ได้ใช้ netcat


1

แทนที่จะเป็น ProxyCommand คุณควรตั้งค่า "gatewayports ใช่" สำหรับพ่อค้าคนกลาง sshd.conf ของคุณ

  1. จากนั้นนำช่องสัญญาณรีโมตจากเดสก์ท็อปไปยังคนกลางและเปิดพอร์ต tcp x เป็นคนกลางและ vnc บนโลคัล
  2. จากนั้นนำอุโมงค์ภายในเครื่องจากแล็ปท็อปไปจนถึงพ่อค้าคนกลางเปิดพอร์ต vnc ไปยังโลคอลโฮสต์ของคุณและทำการอุโมงค์ไปที่ x
  3. จากนั้นเชื่อมต่อกับ localhost: vnc ดังนั้นจะผ่านอุโมงค์ท้องถิ่นไปยังคนกลางและอุโมงค์ระยะไกลไปยังแล็ปท็อป vnc

หลังจากที่คุณใช้งานได้แล้วให้เรียนรู้เพิ่มเติมเกี่ยวกับการตั้งค่าเกตเวย์ที่ปลอดภัยมากขึ้น

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