Ustawianie tunelu SSH przy użyciu plink

W naszej firmie możemy łączyć się ze światem zewnętrznym tylko przy użyciu standardowych portów. Ruch wychodzący na port 8081 jest blokowany przez firewall. Jest to prawdziwy ból w dupie. Musimy opublikować nasze biblioteki Javascript do instancji Nexusa. Ta instancja działa w chmurze na, jak się domyślacie, porcie 8081.

Używamy już potoków Jenkinsa do automatyzacji naszego przepływu pracy. Podjęliśmy decyzję o dodaniu nowego kroku do potoku: ssh-tunneling. Nasza instancja Jenkinsa działa w systemie Windows Server 2012 R2. Użycie basha do stworzenia tunelu nie jest możliwe. Spojrzeliśmy na Powershell, aby skonfigurować tunel SSH, ale wydaje się, że implementacja SSH w Powershell nie jest wystarczająco dojrzała. Skrypty wsadowe na ratunek!

Większość z nas używa Putty do obsługi naszych sesji SSH. Ludzie, którzy stworzyli Putty, stworzyli również plink, interfejs wiersza poleceń do back-endu Putty. W połączeniu z plikami wsadowymi możemy stworzyć tunel SSH w ten sposób:

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

Pozwól mi wyjaśnić różne flagi użyte w powyższym poleceniu:

  • -v : show verbose messages
  • -x: enable X11 forwarding
  • -a: enable agent forwarding
  • -T: disable pty allocation
  • -C: enable compression
  • -noagent: disable use of Pageant (only needed when using SSH-keys)
  • -ssh: use the SSH-protocol
  • -pw: provide the password
  • -L: forward local port to remote address

Używając flagi -L możemy mapować port lokalny na port zdalny. Robi się to za pomocą następującej składni: <localport>:<remoteAddress>:<remotePort>. Po tym następuje nazwa hosta, z którym chcemy się połączyć, poprzedzona nazwą użytkownika, używaną do połączenia: username@remoteHost.

Wstawiając to polecenie do naszego pliku Jenkinsfile, możemy otworzyć tunel do naszej zdalnej instancji Nexusa:

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

.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.