ssh로 쉘스크립트 돌리기

잡설

서버가 우분투 12.04입니다. 네 무려 2012년에 나온 OS이며 LTS도 끝났습니다. 근데 아직도 쌩쌩 돌아가고 있네요. 사정상 업그레이드도 못합니다. 문제는 몇년전부터 Jenkins 버전이 맞지 않아서 Jenkins Slave로 돌릴수 없다는 것입니다. 자바 버전이 업데이트 되면서 생긴 문제인데 바쁘기도 해서 Slave 는 일단 중단시켜놓고 몇년이 지났습니다.
이번에 한가해지면서 Jenkins 를 재가동해보고자 고민을 좀 하다 아이디어를 떠올렸습니다.

"그냥 내 PC에서 Jenkins Slave를 돌리고 ssh로 서버에 접속해서 스크립트를 돌리자"

Requirement


  • 별도의 Password 없이 ssh 접속
  • ssh 통해서 shell 실행
  • 내 PC에 Jenkins Slave 실행
  • 준비된 shell script를 Jenkins Slave에서 실행

SSH Keygen

자동으로 스크립트 실행하기 위해서 별도의 Password 입력없이 ssh를 접속하여 script를 실행할 수 있도록 ssh key-gen 을 진행합니다.

Client측에서 ssh key-gen

$ ssh-keygen
# 적당히 엔터
$ cd ~/.ssh
$ ls
id_rsa  id_rsa.pub
$ cat id_rsa.pub
ssh-rsa ..... shaun289@ubuntu18_04

Server 측에서 authorized_keys 등록


$ cd ~/.ssh
$ echo "ssh-rsa ..... shaun289@ubuntu18_04" >> authorized_keys
$ ls
authorized_keys

Client측에서 Server 접속


$ ssh ubuntu12_04
Welcome to Ubuntu 12.04.5 LTS
$ 

비밀번호를 묻지않고 바로 접속 됩니다.

Run script via SSH

client측에서 아무 스크립트나 하나 만듭니다.
전 echo "hello world"를 만들었습니다.
그리고 client 측에서 다음을 실행합니다.


$ cat test.sh 
echo "hello world"
$ ssh 10.0.121.9 'bash -s' < ./test.sh
hello world

Jenkins Slave를 Client에서 돌리기

Jenkins Slave를 실행하는 것은 이 포스트의 범위를 넘어가기 때문에 생략합니다. 전 Local PC에서 docker로 돌려볼 생각입니다.



댓글

이 블로그의 인기 게시물

WSL2 Ubuntu 20.04 및 네트워크 설정

리눅스 멀티코어를 사용하는 tar 압축/해제

git pull 을 했더니 branch가 갈라지는 경우