Puncte:0

Configurarea VM Windows10 pe Azure ca server SSH pentru a efectua tunel invers

drapel cn

Scop: Expuneți aplicațiile web care rulează pe mașina locală în lumea exterioară folosind tunelarea inversă (serviciu de tip ngrok).

Am un VM Windows 10 Pro care rulează pe Azure. Am instalat serverul OpenSSH acolo și l-am testat folosind redirecționarea portului local și redirecționarea dinamică a portului (proxy socks). Ambele funcționează bine.

Dar nu se pare că tunelul invers să funcționeze.

Aceasta este comanda pe care o folosesc pe mașina mea locală:

ssh -R 5002:localhost:5002 xx.xx.xx.xxx

Unde, xx.xx.xx.xxx este IP-ul public al mașinii virtuale Win10 pe Azure. 5002 este portul pe care rulează aplicația mea web pe mașina mea locală și vreau, de asemenea, să păstrez același port pentru VM-ul Azure.

Comanda de mai sus îmi cere să introduc parola și, la introducerea acesteia, afișează următorul prompt pe terminal, care probabil indică că conexiunea a avut succes.

eu@VMW10Pro C:\Utilizatori\eu>

Dar când încerc să accesez aplicația mea web care rulează local, așa cum urmează, nu se întâmplă nimic:

https://xx.xx.xx.xxx:5002/myapp

Am incercat si eu, fara succes:

http://xx.xx.xx.xxx:5002/myapp

Iată cum am configurat regulile portului de intrare pentru VM Azure: introduceți descrierea imaginii aici

Și iată cum arată regulile portului de ieșire. Am permis chiar și temporar toate porturile. introduceți descrierea imaginii aici

Și acesta este sshd_config fișier pe VM Azure. Singura modificare pe care am făcut-o a fost setarea GatewayPorts la da:

# Acesta este fișierul de configurare la nivel de sistem al serverului sshd. Vedea
# sshd_config(5) pentru mai multe informații.

# Strategia folosită pentru opțiunile din sshd_config implicit livrate cu
# OpenSSH este de a specifica opțiunile cu valoarea lor implicită unde
# posibil, dar lăsați-le comentate. Opțiunile necomentate înlocuiesc
# valoare implicită.

#Portul 22
#AdresaFamiliei orice
#ListenAddress 0.0.0.0
#ListenAddress ::

#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

# Cifruri și codare
#RekeyLimit implicit nici unul

# Logare
#SyslogFacility AUTH
INFORMAȚII #LogLevel

# Autentificare:

#LoginGraceTime 2m
#PermitRootLogin prohibit-parolă
#StrictModes da
#MaxAuthTries 6
#MaxSessions 10

#PubkeyAuthentication da

# Implicit este să verificați atât .ssh/authorized_keys, cât și .ssh/authorized_keys2
# dar aceasta este suprascrisă, astfel încât instalările vor verifica doar .ssh/authorized_keys
AuthorizedKeysFile .ssh/authorized_keys

#AuthorizedPrincipalsFile nici unul

# Pentru ca acest lucru să funcționeze, veți avea nevoie și de chei de gazdă în %programData%/ssh/ssh_known_hosts
#HostbasedAuthentication nr
# Schimbați la yes dacă nu aveți încredere în ~/.ssh/known_hosts pentru
# Autentificare bazată pe gazdă
#IgnoreUserKnownHosts nr
# Nu citiți fișierele ~/.rhosts și ~/.shosts ale utilizatorului
#IgnoreRhosts da

# Pentru a dezactiva parolele de text clar tunelizate, schimbați la nu aici!
#PasswordAuthentication da
#PermitEmptyPasswords nr

#AllowAgentForwarding da
#AllowTcpForwarding da
GatewayPorts da
#PermitTTY da
#PrintMotd da
#PrintLastLog da
#TCPKeepAlive da
#UseLogin nr
#PermitUserMediu nr
#ClientAliveInterval 0
#ClientAliveCountMax 3
#UseDNS nr
#PidFile /var/run/sshd.pid
#MaxStartups 10:30:100
#PermitTunnel nr
#ChrootDirectory niciunul
#VersionAddendum niciunul

# nicio cale implicită pentru banner
#Banner nici unul

# suprascrie valoarea implicită fără subsisteme
Subsistemul sftp sftp-server.exe

# Exemplu de setări de suprascrie pe bază de utilizator
#Match User anoncvs
# AllowTcpForwarding nr
# PermisTTY nr
# Server ForceCommand cvs

Administratorii grupului de potriviri
       AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys

The sshd_config fișierul de pe mașina mea locală arată la fel ca mai sus cu GatewayPorts setat la da.

Vă rugăm să rețineți: nu sunt expert în chestii de rețele. Există și alte tutoriale și instrucțiuni disponibile pentru a face același lucru cu mașinile virtuale Linux. Dar vreau doar să folosesc mașina virtuală Windows existentă.

Orice ajutor ar fi foarte apreciat.

John Hanley avatar
drapel cn
Ați activat redirecționarea IP atât pe interfața de rețea (Azure), cât și în sistemul de operare?
drapel cn
@JohnHanley Am activat numai redirecționarea IP pe interfața de rețea. Dar fără noroc.
John Hanley avatar
drapel cn
Trebuie să le activați pe ambele
drapel cn
@JohnHanley Tocmai l-am activat în sistemul de operare urmând aceste instrucțiuni: https://www.wikihow.com/Enable-IP-Routing-on-Windows-10. Tot fără noroc.
John Hanley avatar
drapel cn
Din păcate, **fără noroc** nu este un termen de depanare pe care îl pot analiza. Trebuie să specificați clar ce nu funcționează. Îmi dau seama că poate fi greu, dar nu putem face asta pentru tine. Deoarece sunteți pe Windows, porniți Wireshark.
drapel cn
Mulțumesc @JohnHanley pentru ajutor. Mi-am dat seama.
Puncte:0
drapel cn

Am găsit soluția. A fost dublu:

  1. obisnuiam ssh -R '*:5002:localhost:5002' xx.xx.xx.xxx în loc de ssh -R 5002:localhost:5002 xx.xx.xx.xxx. Asteriscul face sshd pentru a asculta portul 5002 pe toate interfețele. Altfel ar asculta doar pe interfața loopback.
  2. De asemenea, a trebuit să permit portul 5002 în paravanul de protecție Windows Defender al mașinii virtuale Azure Win10.

Și asta a făcut să funcționeze. Acum pot accesa aplicația mea web care rulează local pe portul 5002 prin internet, accesând-o folosind IP-ul public Azure VM: https://xx.xx.xx.xxx:5002/myapp

Notă: am activat redirecționarea IP atât pe interfața de rețea (Azure), cât și în sistemul de operare VM, urmând sugestia lui John Hanley din comentariile de mai sus. Dar după ce am aplicat cei doi pași menționați mai sus, am dezactivat redirecționarea IP pentru a vedea dacă încă a funcționat și a funcționat.

John Hanley avatar
drapel cn
Pentru tunelare, trebuie să activați redirecționarea IP doar dacă pachetele vor părăsi VM-ul și vor intra în rețea. Întrebarea dvs. nu a fost suficient de clară cu privire la ce faceți tunel invers. Din răspunsul tău, înțeleg obiectivul tău.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.