อุโมงค์ SSH ผ่านการกระโดดหลายครั้ง


332

ข้อมูลทันเนลใน SSH ค่อนข้างตรงไปตรงมา:

ssh -D9999 username@example.com

ตั้งค่าพอร์ต 9999 ของคุณlocalhostเป็นอุโมงค์เพื่อexample.comแต่ฉันมีความต้องการที่เฉพาะเจาะจงมากขึ้น:

  • ฉันทำงานในพื้นที่ localhost
  • host1 สามารถเข้าถึงได้ localhost
  • host2 ยอมรับเฉพาะการเชื่อมต่อจาก host1
  • ฉันต้องสร้างอุโมงค์จากlocalhostถึงhost2

อย่างมีประสิทธิภาพฉันต้องการสร้างอุโมงค์ SSH "multi-hop" ฉันจะทำสิ่งนี้ได้อย่างไร จะเป็นการดีที่ผมอยากจะทำเช่นนี้โดยไม่จำเป็นต้องเป็น superuser ในใด ๆของเครื่อง


2
คุณใช้มันเพื่ออะไร ฉันต้องการใช้เป็นพร็อกซีถุงเท้า มันจะทำงานอย่างไร
ง่าม

2
ใช่คุณควรจะสามารถใช้การเชื่อมต่อที่ใช้ช่องสัญญาณเป็นพร็อกซี SOCKS เว้นแต่จะhost2ปฏิเสธการส่งต่อ
Mala

ฉันกำลังคิดเกี่ยวกับการสร้าง wrapper บน SSH ที่จะตั้งค่านั้นโดยใช้ ProxyCommand หลายครั้ง
Pavel Šimerda

@prongs คุณจัดการเพื่อใช้สิ่งนี้สำหรับพร็อกซี SOCKS (ทุกปีที่ผ่านมา)?
Drux

คำตอบ:


324

คุณมีความเป็นไปได้สามประการ:

  1. อุโมงค์จากlocalhostถึงhost1:

    ssh -L 9999:host2:1234 -N host1
    

    ตามที่ระบุไว้ข้างต้นการเชื่อมต่อจากhost1ถึงhost2จะไม่ปลอดภัย

  2. อุโมงค์จากlocalhostไปยังhost1และจากhost1ไปยังhost2:

    ssh -L 9999:localhost:9999 host1 ssh -L 9999:localhost:1234 -N host2
    

    นี้จะเปิดอุโมงค์จากlocalhostไปhost1และอุโมงค์อื่นจากการhost1 host2แต่พอร์ต9999ที่จะสามารถนำมาใช้โดยทุกคนในhost2:1234 host1สิ่งนี้อาจจะใช่หรือไม่ใช่ปัญหา

  3. อุโมงค์จากlocalhostไปยังhost1และจากlocalhostไปยังhost2:

    ssh -L 9998:host2:22 -N host1
    ssh -L 9999:localhost:1234 -N -p 9998 localhost
    

    สิ่งนี้จะเปิดอุโมงค์จากlocalhostถึงhost1ผ่านซึ่งhost2สามารถใช้บริการ SSH ได้ จากนั้นอุโมงค์ที่สองถูกเปิดจากlocalhostถึงhost2ผ่านอุโมงค์แรก

โดยปกติแล้วฉันจะไปกับตัวเลือกที่ 1 หากการเชื่อมต่อจากhost1ไปยังhost2ต้องได้รับการรักษาความปลอดภัยให้ไปกับตัวเลือกที่ 2 ตัวเลือกที่ 3 มีประโยชน์หลักในการเข้าถึงบริการhost2ที่สามารถเข้าถึงได้จากhost2ตัวเองเท่านั้น


17
ตัวเลือก 3 คือสิ่งที่ฉันกำลังมองหาขอบคุณ!
Mala

1
ฉันต้องการท่องเว็บด้วยวิธีนี้ คนไหนดีที่สุด? ฉันลองครั้งแรก แต่มันไม่ทำงาน ฉันตั้งค่าพร็อกซีถุงเท้าในเบราว์เซอร์ในพื้นที่ของฉัน: 1234 แต่ไม่มีโชค :( โปรดช่วย ..
ง่ามเมื่อ

1
@prong ลองตัวเลือก 3
Mala

6
@Noli หากคุณใช้ ssh-agent (ซึ่งคุณควร) คุณสามารถส่งต่อผ่านการเชื่อมต่อโดยใช้-Aตัวเลือกเพื่อ ssh
Mika Fischer

2
@musically_ut - ถูกต้องแล้วคำสั่ง ssh ที่ 2 จะถูกแบ็คกราวน์บน host1 ดังนั้นหากคุณต้องการเชื่อมต่ออีกครั้งกับเครื่องคุณจะต้องรันส่วนแรกอีกครั้ง หากคุณเพิ่ม-fมันจะพื้นหลังในพื้นที่ทันทีดังนั้นssh -f -L 9999:localhost:9999 host1จะเชื่อมต่อใหม่ถ้าคุณกด ctrl-c ในกรณีแรก หรือเพิ่ม-fไปยังคำสั่ง double ssh ดั้งเดิมเมื่อเรียกใช้มันเป็นพื้นหลังทุกอย่างทันที
มาร์คฟิชเชอร์

153

มีคำตอบที่ยอดเยี่ยมที่อธิบายการใช้ProxyCommandคำสั่งการกำหนดค่าสำหรับ SSH :

เพิ่มไปยังของคุณ~/.ssh/config(ดูman 5 ssh_configรายละเอียด):

Host host2
  ProxyCommand ssh host1 -W %h:%p

จากนั้นssh host2จะทำการอุโมงค์โดยอัตโนมัติhost1(ยังทำงานกับการส่งต่อ X11 เป็นต้น)

วิธีนี้ใช้ได้กับโฮสต์ทั้งหมดเช่นระบุโดยโดเมน:

Host *.mycompany.com
  ProxyCommand ssh gateway.mycompany.com -W %h:%p

ปรับปรุง

OpenSSH 7.3 แนะนำProxyJumpสั่งง่ายตัวอย่างแรกไป

Host host2
  ProxyJump host1

3
มีวิธีการทำเช่นนี้ตามเงื่อนไข? บางครั้งฉันต้องการทำสิ่งนี้ นอกจากนี้ยังใช้สำหรับคำสั่งโดยเฉพาะ แต่ฉันกำลังมองหาบางอย่างสำหรับพอร์ต 22 ทั้งหมด (ssh, sftp, ฯลฯ )
Stephane

1
@Stephane คุณหมายถึงอะไรโดยเฉพาะสำหรับคำสั่ง ? การกำหนดค่า SSH ของคุณถูกใช้โดยสิ่งใดก็ตามที่ใช้sshรวมถึงgitและsftpอื่น ๆ afaik
kynan

1
@Stephane ฉันไม่ทราบวิธีเปิดใช้งานเงื่อนไขนี้ (เช่นเฉพาะเมื่อคุณอยู่นอกเครือข่ายของโฮสต์เป้าหมาย) ฉันตั้งค่าตัวเลือกนี้สำหรับโฮสต์ทั้งหมดที่สงสัยในบล็อกการกำหนดค่าจากนั้น (ยกเลิก) แสดงความคิดเห็นในบรรทัดตามต้องการ ไม่สมบูรณ์แบบ แต่ใช้งานได้
kynan

2
@Stephane ssh -F /path/to/altconfigแน่ใจว่า: /etc/ssh/ssh_configระวังนี้จะไม่สนใจระบบกว้าง
kynan

19
วิธีง่ายๆในการตั้งค่า "เงื่อนไข" คือการกำหนดโฮสต์ที่แตกต่างกันสองรายการใน. ssh / config ที่มีชื่อโฮสต์เดียวกัน เชื่อมต่อกับ host2-tunnel เมื่อคุณต้องการ tunnel และ host2 เมื่อคุณไม่ต้องการ
Steve Bennett

25

OpenSSH v7.3 เป็นต้นไปสนับสนุน-Jสวิตช์และProxyJumpตัวเลือกซึ่งอนุญาตให้ใช้โฮสต์การข้ามที่คั่นด้วยเครื่องหมายจุลภาคหนึ่งตัวหรือมากกว่าดังนั้นคุณสามารถทำสิ่งนี้ได้ทันที:

ssh -J jumpuser1@jumphost1,jumpuser2@jumphost2,...,jumpuserN@jumphostN user@host

ssh -J user1 @ host1 -YC4c arcfour, blowfish-cbc user2 @ host2 firefox -no-remote สิ่งนี้จะเร่งความเร็วการรับ firefox จาก host2 ไปยัง localhost
Jaur

21

เรามีหนึ่ง ssh เกตเวย์ในเครือข่ายส่วนตัวของเรา ถ้าฉันออกไปข้างนอกและต้องการเปลือกระยะไกลบนเครื่องภายในเครือข่ายส่วนตัวฉันจะต้อง ssh เข้าสู่เกตเวย์และจากที่นั่นไปยังเครื่องส่วนตัว

เพื่อให้กระบวนการนี้เป็นไปโดยอัตโนมัติฉันใช้สคริปต์ต่อไปนี้:

#!/bin/bash
ssh -f -L some_port:private_machine:22 user@gateway "sleep 10" && ssh -p some_port private_user@localhost

เกิดอะไรขึ้น:

  1. สร้างช่องสัญญาณสำหรับโปรโตคอล ssh (พอร์ต 22) ไปยังเครื่องส่วนตัว
  2. เฉพาะในกรณีนี้จะประสบความสำเร็จ ssh เข้าไปในเครื่องส่วนตัวโดยใช้อุโมงค์ (&& ผู้ดำเนินการตรวจสอบให้แน่ใจว่าสิ่งนี้)
  3. หลังจากปิดเซสชัน ssh ส่วนตัวฉันต้องการให้ ssh tunnel ปิดเช่นกัน สิ่งนี้ทำได้ผ่านเคล็ดลับ "sleep 10" โดยปกติแล้วคำสั่ง ssh แรกจะปิดหลังจาก 10 วินาที แต่ในช่วงเวลานี้คำสั่ง ssh ที่สองจะสร้างการเชื่อมต่อโดยใช้ช่องสัญญาณ เป็นผลให้คำสั่ง ssh แรกยังคงเปิดช่องสัญญาณไว้จนกระทั่งเงื่อนไขสองข้อต่อไปนี้เป็นจริง: sleep 10 เสร็จสิ้นและอุโมงค์ไม่ได้ใช้อีกต่อไป

1
ฉลาดมาก!!! รักมัน!
Hendy Irawan

18

หลังจากอ่านข้างต้นและรวมทุกอย่างเข้าด้วยกันฉันได้สร้างสคริปต์ Perl ต่อไปนี้ (บันทึกเป็น mssh ใน / usr / bin และทำให้สามารถเรียกใช้งานได้):

#!/usr/bin/perl

$iport = 13021;
$first = 1;

foreach (@ARGV) {
  if (/^-/) {
    $args .= " $_";
  }
  elsif (/^((.+)@)?([^:]+):?(\d+)?$/) {
    $user = $1;
    $host = $3;
    $port = $4 || 22;
    if ($first) {
      $cmd = "ssh ${user}${host} -p $port -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no";
      $args = '';
      $first = 0;
    }
    else {
      $cmd .= " -L $iport:$host:$port";
      push @cmds, "$cmd -f sleep 10 $args";
      $cmd = "ssh ${user}localhost -p $iport -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no";
      $args = '';
      $iport ++;
    }
  }
}
push @cmds, "$cmd $args";

foreach (@cmds) {
  print "$_\n";
  system($_);
}

การใช้งาน:

วิธีเข้าถึง HOSTC ผ่าน HOSTA และ HOSTB (ผู้ใช้เดียวกัน):

mssh HOSTA HOSTB HOSTC

ในการเข้าถึง HOSTC ผ่าน HOSTA และ HOSTB และใช้ SSH-portnumbers และผู้ใช้อื่นที่ไม่ใช่ค่าเริ่มต้น:

mssh user1@HOSTA:1234 user2@HOSTB:1222 user3@HOSTC:78231

ในการเข้าถึง HOSTC ผ่าน HOSTA และ HOSTB และใช้ X-forwarding:

mssh HOSTA HOSTB HOSTC -X

วิธีเข้าถึงพอร์ต 8080 บน HOSTC ผ่าน HOSTA และ HOSTB:

mssh HOSTA HOSTB -L8080:HOSTC:8080

1
นี่มันยอดเยี่ยมมาก
Mala

1
ฉันไม่สามารถขอบคุณอย่างจริงจังได้มากพอบทนี้ทำให้ชีวิตของฉันง่ายขึ้นทุกวัน สิ่งเดียวที่ฉันเปลี่ยนคือการเพิ่ม int (rand (1,000)) ใน iport เพื่อให้สามารถใช้งานได้หลายอินสแตนซ์ในเวลาเดียวกัน ฉันเป็นหนี้คุณแน่นอนเบียร์
Mala

มันใช้งานได้ดีจริงๆ การปรับปรุงเพิ่มเติมคือการแก้ไขโฮสต์, โฮสท์และอื่น ๆ โดยใช้โฮสต์ / etc / hosts และ ~ / .ssh / config ของ localhost
Steve Bennett

นอกจากนี้ฉันยังแสดงความคิดเห็นที่สองของ Mala หากไม่มีพอร์ตสุ่มถ้าคุณลองmssh HOSTA HOSTDคุณจะพบว่าตัวเองจบลงที่ HOSTB (และอาจจะไม่ได้รับรู้ถึง .. )
Steve Bennett

8

คำตอบนี้คล้ายกับ kynan เนื่องจากเกี่ยวข้องกับการใช้ ProxyCommand แต่การใช้ IMO จะสะดวกกว่า

หากคุณติดตั้ง netcat ในเครื่องกระโดดของคุณคุณสามารถเพิ่มข้อมูลโค้ดนี้ลงใน ~ / .ssh / config:

Host *+*
    ProxyCommand ssh $(echo %h | sed 's/+[^+]*$//;s/\([^+%%]*\)%%\([^+]*\)$/\2 -l \1/;s/:/ -p /') nc $(echo %h | sed 's/^.*+//;/:/!s/$/ %p/;s/:/ /')

แล้วก็

ssh -D9999 host1+host2 -l username

จะทำสิ่งที่คุณถาม

ฉันมาที่นี่เพื่อค้นหาสถานที่ดั้งเดิมที่ฉันอ่านเคล็ดลับนี้ ฉันจะโพสต์ลิงก์เมื่อพบ


2
ฉันเชื่อว่านี่คือต้นกำเนิดของเคล็ดลับ: wiki.gentoo.org/wiki/SSH_jump_host
slm

5

ฉันทำสิ่งที่ฉันคิดว่าคุณต้องการจะทำ

ssh -D 9999 -J host1 host2

ฉันขอรหัสผ่านทั้งสองจากนั้นฉันสามารถใช้ localhost: 9999 สำหรับพร็อกซี SOCKS ไปยัง host2 มันใกล้เคียงที่สุดที่ฉันสามารถนึกถึงตัวอย่างที่คุณแสดงในตอนแรก


มันทำงานได้อย่างสมบูรณ์แบบ!
Arthur Silva

4
ssh -L 9999:host2:80 -R 9999:localhost:9999 host1

-L 9999: host2: 80

หมายถึงผูกกับ localhost: 9999 และแพ็คเก็ตใด ๆ ที่ส่งไปยัง localhost: 9999 ส่งต่อไปยังโฮสต์ 2: 80

-R 9999: localhost: 9999

หมายถึงแพ็กเก็ตใด ๆ ที่ได้รับโดย host1: 9999 ส่งต่อมันกลับไปที่ localhost: 9999


คำตอบที่ยอดเยี่ยมและง่ายที่สุดในการสร้างอุโมงค์เพื่อให้คุณสามารถเข้าถึงแอปพลิเคชันบน host2 ได้โดยตรงจาก localhost: 9999
dvtoever

ทำตามคำตอบนี้ฉันได้รับchannel 3: open failed: administratively prohibited: open failed ข้อความแสดงข้อผิดพลาด
Franck Dernoncourt

2

คุณควรจะสามารถที่จะใช้การส่งต่อพอร์ตการเข้าถึงบริการได้จากhost2 localhostคำแนะนำที่ดีตั้งอยู่ที่นี่ ข้อความที่ตัดตอนมา:

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

ตัวอย่างเช่นหากคุณออกคำสั่ง

ssh2 -L 1234:localhost:23 username@host

ทราฟฟิกทั้งหมดที่มาที่พอร์ต 1234 บนไคลเอนต์จะถูกส่งต่อไปยังพอร์ต 23 บนเซิร์ฟเวอร์ (โฮสต์) โปรดทราบว่า localhost จะได้รับการแก้ไขโดย sshdserver หลังจากสร้างการเชื่อมต่อแล้ว ในกรณีนี้ localhost หมายถึงเซิร์ฟเวอร์ (โฮสต์) เอง

การส่งต่อพอร์ตระยะไกลทำในสิ่งที่ตรงกันข้าม: ส่งต่อการรับส่งข้อมูลที่มาถึงพอร์ตระยะไกลไปยังพอร์ตท้องถิ่นที่ระบุ

ตัวอย่างเช่นหากคุณออกคำสั่ง

ssh2 -R 1234:localhost:23 username@host

ทราฟฟิกทั้งหมดที่มาถึงพอร์ต 1234 บนเซิร์ฟเวอร์ (โฮสต์) จะถูกส่งต่อไปยังพอร์ต 23 บนไคลเอ็นต์ (localhost)

ในบล็อกของคุณแทนที่localhostในตัวอย่างที่มีhost2และมีhosthost1


ตามบทความนั้นการเชื่อมต่อจะได้รับการรักษาความปลอดภัยจนกว่าเครื่องกลาง (โฮสต์ 1) มีวิธีที่จะทำให้แน่ใจว่าทุกอย่างปลอดภัยหรือไม่?
Mala

ฉันไม่เคยลองสิ่งนี้ แต่ถ้า host1 และ host2 เป็นทั้งเซิร์ฟเวอร์ ssh คุณอาจสามารถตั้งค่า tunnel จาก host1 เป็น host2 จากนั้นตั้งค่า tunnel จาก localhost ไปยัง host1 สำหรับบริการเดียวกัน พอร์ตที่ถูกต้อง) ฉันไม่รู้ว่าเป็นไปได้ในคำสั่งเดียวจาก localhost
fideli

1

ในคำตอบนี้ฉันจะผ่านตัวอย่างที่เป็นรูปธรรม คุณเพียงแค่เปลี่ยนชื่อโฮสต์ชื่อผู้ใช้และรหัสผ่านของคอมพิวเตอร์

คำชี้แจงปัญหา

สมมติว่าเรามีโครงสร้างเครือข่ายต่อไปนี้:

our local computer <---> server 1 <---> server 2

เพื่อความเป็นรูปธรรมสมมติว่าเรามีชื่อโฮสต์ชื่อผู้ใช้และรหัสผ่านของคอมพิวเตอร์ต่อไปนี้:

LocalPC            <--->  hostname: mit.edu         <---> hec.edu
                          username: bob                   username: john 
                          password: dylan123              password: doe456

ประตู: เราต้องการที่จะตั้งค่าพร็อกซี่ถุงเท้าที่ฟังในพอร์ต9991ของLocalPCเพื่อที่ว่าทุกครั้งที่มีการเชื่อมต่อบนLocalPCจะเริ่มจากพอร์ต 9991มันผ่านไปแล้วmit.eduhec.edu

ตัวอย่างกรณีการใช้งาน: hec.eduมีเซิร์ฟเวอร์ HTTP ที่สามารถเข้าถึงได้เฉพาะใน http://127.0.0.1:8001เท่านั้นเพื่อเหตุผลด้านความปลอดภัย เราอยากที่จะสามารถเยี่ยมชม http://127.0.0.1:8001LocalPCโดยการเปิดเว็บเบราว์เซอร์บน


องค์ประกอบ

ในLocalPCเพิ่มใน~/.ssh/config:

Host HEC
    HostName hec.edu
    User john
    ProxyCommand ssh bob@mit.edu -W %h:%p

จากนั้นในเทอร์มินัลของLocalPCให้รัน:

ssh -D9991 HEC

มันจะถามรหัสผ่านของbobเปิดmit.edu(เช่นdylan123) จากนั้นจะถามรหัสผ่านของjohnเปิดhec.edu(เช่นdoe456)

ณ จุดที่พร็อกซีถุงเท้าตอนนี้ทำงานบนพอร์ตของ9991LocalPC

ตัวอย่างเช่นหากคุณต้องการเยี่ยมชมเว็บเพจLocalPCโดยใช้พร็อกซี SOCKS คุณสามารถทำได้ใน Firefox:

ป้อนคำอธิบายรูปภาพที่นี่

ข้อสังเกตบางส่วน:

  • ใน~/.ssh/config, HECเป็นชื่อการเชื่อมต่อ: คุณอาจเปลี่ยนเป็นสิ่งที่คุณต้องการ
  • -D9991บอกsshการตั้งค่าพร็อกซี SOCKS4 9991ในพอร์ต

0

หากคุณสามารถ SSH ลงในทั้งสองเครื่องลองดูที่คำสั่ง ProxyCommand ของ ssh สิ่งนี้จะทำให้คุณตรงจาก localhost ไปที่ host2 (ในคำสั่งเดียวถ้าคุณใช้กุญแจสาธารณะ !!) จากนั้นคุณสามารถทำอะไรก็ได้ที่คุณต้องการด้วย host2

http://www.statusq.org/archives/2008/07/03/1916/


0

ตัวเลือกที่ 2 ของคำตอบที่ดีที่สุดสามารถใช้กับผู้ใช้ ssh ที่แตกต่างจากผู้ใช้ ssh ปัจจุบัน: aka @ host @

    export local_host_port=30000
    export host1_user=xyz
    export host1=mac-host
    export host1_port=30000
    export host2=192.168.56.115
    export host2_user=ysg
    export host2_port=13306

    # Tunnel from localhost to host1 and from host1 to host2
    # you could chain those as well to host3 ... hostn
    ssh -tt -L $local_host_port:localhost:$host1_port $host1_user@$host1 \
    ssh -tt -L $host1_port:localhost:$host2_port $host2_user@$host2

0

ในกรณีของฉันฉันทำ

localhost$ ssh -D 9999 host1
host1$ ssh -L 8890:localhost:8890 host2

ที่host2:8890ทำงานบน Jupyter Notebook

จากนั้นฉันกำหนดค่า Firefox ให้ใช้localhost:9999เป็นโฮสต์ SOCKS

ดังนั้นตอนนี้ฉันได้ให้โน้ตบุ๊กทำงานบนhost2Firefox ที่เข้าถึงได้localhost:8890บนเครื่องของฉัน


0

ตัวเลือกทั้งสามที่กล่าวถึงในคำตอบที่ยอมรับนั้นใช้ไม่ได้กับฉันเลย เนื่องจากฉันไม่ได้รับอนุญาตมากจากทั้งสองครอบครัวและดูเหมือนว่าทีม DevOps ของเรามีกฎที่เข้มงวดมากเมื่อต้องมีการตรวจสอบสิทธิ์และกำลังทำ MFA อย่างใดคำสั่งข้างต้นไม่สามารถเล่นได้ดีกับการตรวจสอบของเรา

บริบทคล้ายกับคำตอบข้างต้นจริงๆ: ฉันไม่สามารถ ssh ลงในเซิร์ฟเวอร์การผลิตโดยตรงและต้องทำ 1 hop โดยใช้เซิร์ฟเวอร์กระโดด

โซลูชั่นอื่น - หนึ่งที่ไร้เดียงสา

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

  1. SSH ssh -v -L 6969:localhost:2222 -N your-protected.dest.serverลงในเซิร์ฟเวอร์กระโดดของคุณแล้วเรียกใช้ หากคุณได้รับพร้อมท์ให้ป้อนรหัสผ่านใด ๆ ให้พิมพ์
  2. ssh -v -L 6969:localhost:6969 -N your-jump-server.host.nameตอนนี้เกี่ยวกับแล็ปท็อปของคุณทำงาน สิ่งนี้จะส่งต่อคำขอใด ๆ ของคุณที่พอร์ต 6969 บนแล็ปท็อปของคุณไปยังเซิร์ฟเวอร์กระโดด จากนั้นตามลำดับเนื่องจากเรากำหนดค่าในขั้นตอนก่อนหน้าของเราเซิร์ฟเวอร์กระโดดจะส่งคำขอพอร์ต 6969 ไปยังพอร์ต 2222 อีกครั้งบนเซิร์ฟเวอร์ปลายทางที่ได้รับการป้องกัน

คุณควรเห็นคำสั่ง "แฮงค์" หลังจากพิมพ์ข้อความ - หมายความว่าพวกมันใช้งานได้! หนึ่งข้อยกเว้น - คุณไม่ควรเห็นข้อความแสดงข้อผิดพลาดเช่นCould not request local forwarding.ถ้าคุณเห็นว่ามันยังไม่ทำงาน :( ตอนนี้คุณสามารถลองส่งคำขอบนพอร์ต 6969 จากแล็ปท็อปของคุณและดูว่ามันทำงานได้หรือไม่

หวังว่าถ้าคุณเป็นคนที่ล้มเหลวทุกวิธีข้างต้นบางทีคุณสามารถลองได้

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