วัตถุประสงค์:
เปิดเผยเว็บแอปที่ทำงานบนเครื่องท้องถิ่นสู่โลกภายนอกโดยใช้การย้อนกลับของช่องสัญญาณ (บริการแบบ ngrok)
ฉันมี Windows 10 Pro VM ที่ทำงานบน Azure ฉันได้ติดตั้งเซิร์ฟเวอร์ OpenSSH ที่นั่นแล้วและฉันได้ทดสอบโดยใช้การส่งต่อพอร์ตในเครื่องและการส่งต่อพอร์ตแบบไดนามิก (socks proxy) ทั้งสองทำงานได้ดี
แต่ดูเหมือนว่าฉันจะไม่ทำงานการย้อนกลับของอุโมงค์
นี่คือคำสั่งที่ฉันใช้ในเครื่องของฉัน:
ssh -R 5002:localhost:5002 xx.xx.xx.xxx
ที่ไหน,
xx.xx.xx.xxx เป็น IP สาธารณะของ Win10 VM บน Azure
5002 เป็นพอร์ตที่เว็บแอปของฉันทำงานบนเครื่องของฉัน และฉันต้องการเก็บพอร์ตเดียวกันไว้สำหรับ Azure VM
คำสั่งด้านบนแจ้งให้ฉันป้อนรหัสผ่าน และเมื่อป้อนแล้ว จะแสดงข้อความต่อไปนี้บนเทอร์มินัล ซึ่งอาจแสดงว่าการเชื่อมต่อสำเร็จ
me@VMW10Pro C:\Users\me>
แต่เมื่อฉันพยายามเข้าถึงเว็บแอปที่ทำงานในเครื่องของฉันดังต่อไปนี้ ไม่มีอะไรเกิดขึ้น:
https://xx.xx.xx.xxx:5002/myapp
ฉันพยายามโดยไม่มีโชคด้วย:
http://xx.xx.xx.xxx:5002/myapp
นี่คือวิธีที่ฉันกำหนดค่ากฎพอร์ตขาเข้าสำหรับ Azure VM:
และนี่คือลักษณะของกฎพอร์ตขาออก ฉันได้อนุญาตพอร์ตทั้งหมดชั่วคราว
และนี่คือ sshd_config
ไฟล์บน Azure VM สิ่งเดียวที่ฉันทำคือการตั้งค่า พอร์ตเกตเวย์
ถึง ใช่
:
# นี่คือไฟล์การกำหนดค่าทั้งระบบของเซิร์ฟเวอร์ sshd ดู
# sshd_config(5) สำหรับข้อมูลเพิ่มเติม
# กลยุทธ์ที่ใช้สำหรับตัวเลือกในค่าเริ่มต้น sshd_config ที่มาพร้อมกับ
# OpenSSH คือการระบุตัวเลือกด้วยค่าเริ่มต้นโดยที่
# เป็นไปได้ แต่ปล่อยให้พวกเขาแสดงความคิดเห็น ตัวเลือกที่ไม่มีความคิดเห็นจะแทนที่
#ค่าเริ่มต้น
#ท่าเรือ22
#AddressFamily ใด ๆ
#ฟังที่อยู่ 0.0.0.0
#ฟังที่อยู่ ::
#HostKey __PROGRAMDATA__/ssh/ssh_host_rsa_key
#HostKey __PROGRAMDATA__/ssh/ssh_host_dsa_key
#HostKey __PROGRAMDATA__/ssh/ssh_host_ecdsa_key
#HostKey __PROGRAMDATA__/ssh/ssh_host_ed25519_key
# ยันต์และกุญแจ
#RekeyLimit ไม่มีค่าเริ่มต้น
#บันทึก
#SyslogFacility AUTH
ข้อมูล #LogLevel
# การรับรองความถูกต้อง:
#LoginGraceTime 2 ม
#PermitRootLogin ห้ามรหัสผ่าน
#StrictModes ใช่
#MaxAuthTries 6
#MaxSessions 10
#PubkeyAuthentication ใช่
# ค่าเริ่มต้นคือการตรวจสอบทั้ง .ssh/authorized_keys และ .ssh/authorized_keys2
# แต่สิ่งนี้ถูกแทนที่ ดังนั้นการติดตั้งจะตรวจสอบเฉพาะ .ssh/authorized_keys
AuthorizedKeysFile .ssh/authorized_keys
#AuthorizedPrincipalsไม่มีไฟล์
# เพื่อให้ใช้งานได้ คุณจะต้องมีรหัสโฮสต์ใน %programData%/ssh/ssh_known_hosts
#HostbasedAuthentication เลขที่
# เปลี่ยนเป็น ใช่ หากคุณไม่เชื่อถือ ~/.ssh/known_hosts for
# การรับรองความถูกต้องตามโฮสต์
#IgnoreUserKnownHosts หมายเลข
# อย่าอ่านไฟล์ ~/.rhosts และ ~/.shosts ของผู้ใช้
#IgnoreRhosts ใช่
# หากต้องการปิดใช้งานรหัสผ่านข้อความธรรมดาแบบ Tunneled ให้เปลี่ยนเป็นไม่ที่นี่!
#PasswordAuthentication ใช่
#PermitEmptyPasswords เลขที่
#AllowAgentForwarding ใช่
#AllowTcpForwarding ใช่
GatewayPort ใช่
#PermitTTY ใช่
#PrintMotd ใช่
#PrintLastLog ใช่
#TCPKeepAlive ใช่
#ใช้เข้าสู่ระบบหมายเลข
#ใบอนุญาตผู้ใช้สิ่งแวดล้อม เลขที่
#ClientAliveInterval 0
#ClientAliveCountสูงสุด 3
#ใช้หมายเลข DNS
#PidFile /var/run/sshd.pid
#MaxStartups 10:30:100
#อุโมงค์อนุญาตหมายเลข
#ChrootDirectory ไม่มี
#เวอร์ชันภาคผนวกไม่มี
# ไม่มีเส้นทางแบนเนอร์เริ่มต้น
#ไม่มีแบนเนอร์
# ลบล้างค่าเริ่มต้นที่ไม่มีระบบย่อย
ระบบย่อย sftp sftp-server.exe
# ตัวอย่างของการตั้งค่าที่ลบล้างในแต่ละผู้ใช้
#Match ผู้ใช้ anoncvs
# AllowTcpForwarding เลขที่
#ใบอนุญาตTTYเลขที่
# เซิร์ฟเวอร์ ForceCommand cvs
ผู้ดูแลกลุ่มแมตช์
AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys
เดอะ sshd_config
ไฟล์ในเครื่องของฉันก็มีลักษณะเหมือนกับด้านบนด้วย พอร์ตเกตเวย์
ตั้งค่าให้ ใช่
.
โปรดทราบ: ฉันไม่ใช่ผู้เชี่ยวชาญเกี่ยวกับระบบเครือข่าย มีแบบฝึกหัดและวิธีใช้อื่น ๆ ในการทำเช่นเดียวกันกับ Linux VM แต่ฉันแค่ต้องการใช้ประโยชน์จาก Windows VM ที่มีอยู่
ความช่วยเหลือใด ๆ ที่จะได้รับการชื่นชมมาก