SSH-tunnel beállítása a plink segítségével

Cégünknél csak a szabványos portokon keresztül tudunk a külvilághoz csatlakozni. A 8081-es portra kimenő forgalmat a tűzfal blokkolja. Ez egy igazi púp a hátunkon. A Javascript könyvtárainkat egy Nexus példányban kell közzétennünk. Ez a példány a felhőben fut, kitaláltad, a 8081-es porton.

A munkafolyamatunk automatizálására már használjuk a Jenkins pipelines-t. Úgy döntöttünk, hogy egy új lépéssel bővítjük a csővezetéket: ssh-tunneling. A Jenkins-példányunk Windows Server 2012 R2 rendszerben fut. A bash használatával az alagút létrehozása nem valósítható meg. Megnéztük a Powershell-t az SSH-alagút létrehozásához, de úgy tűnik, hogyaz SSH megvalósítása a Powershell-ben nem elég kiforrott. Batch scriptek a segítségünkre!

A legtöbbünk a Putty-t használja az SSH-munkamenetek kezelésére. A Putty készítői készítik a plinket is, egy parancssori interfészt a Putty back-endhez. Batch fájlokkal kombinálva így tudunk SSH-tunnelt létrehozni:

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

Magyarázom a fenti parancsban használt különböző flageket:

  • -v : verbose üzenetek megjelenítése
  • -x: X11 továbbítás engedélyezése
  • -a: agent továbbítás engedélyezése
  • -T: pty allokáció tiltása
  • -C: tömörítés engedélyezése
  • -noagent: letiltja a Pageant használatát (csak SSH-kulcsok használatakor szükséges)
  • -ssh: SSH-protokoll használata
  • -pw: jelszó megadása
  • -L: helyi port továbbítása távoli címre

A -L flag használatával egy helyi portot leképezhetünk egy távoli portra. Ezt a következő szintaxissal tehetjük meg: <localport>:<remoteAddress>:<remotePort>. Ezt követi az a hostnév, amelyhez csatlakozni szeretnénk, a felhasználónév előtaggal, amelyet a csatlakozáshoz használunk: username@remoteHost.

Ezt a parancsot beillesztve a Jenkinsfile-unkba, tudunk egy alagutat nyitni a távoli Nexus példányunkhoz:

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

.

Vélemény, hozzászólás?

Az e-mail-címet nem tesszük közzé.