Configurarea unui tunel SSH folosind plink

În cadrul companiei noastre, ne putem conecta la lumea exterioară doar folosind porturile standard. Traficul de ieșire către portul 8081 este blocat de firewall. Acest lucru este o adevărată pacoste. Trebuie să ne publicăm bibliotecile Javascript pe o instanță Nexus. Această instanță rulează în cloud pe, ați ghicit, portul 8081.

Utilizăm deja conductele Jenkins pentru a ne automatiza fluxul de lucru. S-a luat decizia de a adăuga un nou pas la pipeline: ssh-tunneling. Instanța noastră Jenkins rulează în Windows Server 2012 R2. Utilizarea lui bash pentru a crea un tunel nu poate fi realizată. Am aruncat o privire la Powershell pentru a configura tunelul SSH, dar se pare că implementarea SSH în Powershell nu este suficient de matură. Scripturi de lot pentru salvare!

Cei mai mulți dintre noi folosim Putty pentru a ne gestiona sesiunile SSH. Cei care fac Putty fac și plink, o interfață în linie de comandă pentru back-end-ul Putty. În combinație cu fișiere batch putem crea un SSH-tunel ca acesta:

plink -v -x -a -T -C -noagent -ssh -pw "password" -L 8081:our-nexus-instance.com:8081 [email protected]

Lăsați-mă să vă explic diferitele stegulețe folosite în comanda de mai sus:

  • -v : show verbose messages
  • -x: enable X11 forwarding
  • -a: enable agent forwarding
  • -T: disable pty allocation
  • -C: activează compresia
  • -noagent: dezactivează utilizarea Pageant (necesar doar atunci când se utilizează chei SSH)
  • -ssh: utilizează protocolul SSH
  • -pw: furnizează parola
  • -L: redirecționează portul local către adresa de la distanță

Utilizând stegulețul -L putem mapa un port local către un port de la distanță. Acest lucru se face folosind următoarea sintaxă: <localport>:<remoteAddress>:<remotePort>. Aceasta este urmată de numele de gazdă la care dorim să ne conectăm, prefixat cu numele de utilizator, folosit pentru a ne conecta: username@remoteHost.

Prin inserarea acestei comenzi în fișierul nostru Jenkinsfile, putem deschide un tunel către instanța noastră Nexus la distanță:

stage('Publish') {
steps {
bat "plink -v -x -a -T -C -noagent -ssh -pw 'password -L 8081:our-
nexus-instance:8081 [email protected]"
}
}

.

Lasă un răspuns

Adresa ta de email nu va fi publicată.