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]"
}
}
.