Developer/Posting

[Linux] sshpass와 alias로 ssh 자동 로그인 처리하기

codingzipsa 2024. 4. 2. 11:00
반응형

1. Alias

리눅스 계열 터미널에서 쓸 수 있는 기능으로, 말 그대로 별칭이라는 의미와 함께 터미널에서 특정 문장 또는 단어를 명령어와 매핑해놓을 수 있다. 초기 컴퓨터 구매 후 개발환경 설정 시 Git을 설치하면 아래와 같은 alias가 자동으로 설정이 된다.

 

- gst='git status'

- gstaa='git stash apply'

 

글의 주제인 ssh 접속 주소나 포트를 매번 외우지 못하거나 명령어를 계속 까먹거나 헷갈린다면 본 alias는 매우 유용한 선택지가 된다.

 

2. sshport

기본적인 ssh 명령어를 사용할 시 각 플래그에 맞춰 값을 넣고 명령을 주기가 좀 까다롭다.

이때 사용할 수 있는 것이 바로 'sshport' 이다.

 

apt, conda, yum등 다양한 패키지 매니저 하에서 설치가 자유로우며, 나는 맥을 사용하고 있기에 homebrew를 이용하여 설치하는 것으로 정하였다.

 

https://formulae.brew.sh/formula/sshpass

 

sshpass

Homebrew’s package index

formulae.brew.sh

 

3. 명령어

현재 zsh과 iTerm사용을 하고 있으며, 기본적인 플래그만 알면 사용이 어렵지는 않다.

 

-p: 패스워드

-P: 포트 (기본 ssh 포트 이외 사용 시)

-t: known host 경고메세지 무시 처리

 

추가 플래그 확인은 sshpass -h를 입력해보면 확인이 가능하다.

 

1) ssh를 통한 서버 접속

alias server="sshpass -p 'password' ssh id@server.com"

 

- vi ~/.zshrc 명령어를 통해 zsh 설정으로 진입한다.

- alias를 적어두는 부분에 사용하고 싶은 별칭을 적어준다.

- 등호 우측으로 sshpass -p'패스워드' ssh 사용아이디@서버주소 입력한다.

- source ~/.zshrc 또는 터미널 재오픈을 통해 해당 alias가 인식되게 한다.

- 터미널 창에서 alias를 입력하여 정확하게 명령어가 입력되어 있는지 확인한다.

 

2) 서버 접속 심화

만약 서버 진입 후 내부가 분리되어 있어 추가로 ssh를 통해 진입이 필요한 상황이라면

하기와 같이 ssh 명령어를 묶어주어 처리하면 한번에 2 depth를 진입할 수 있다.

alias server="sshpass -p 'password' ssh id@server.com -t sshpass -p 'password' ssh id@anotherserver.com"

 

3) 접속 심화 및 명령어 추가

만약 위 상황으로 접속 후 로그가 보고 싶다면?

간단하게 후미에 로그를 보는 명령어를 추가해주면 된다.

 

예시로 도커 컨테이너 리스트를 보는 명령어를 추가해보자.

명령어는 docker ps -a이며, 후미에 해당 명령어를 추가해본다.

alias docker="sshpass -p 'password' ssh id@server.com -t sshpass -p 'password' ssh id@anotherserver.com 'docker ps -a'"

 

위와 같이 추가하면 ssh 접속(1) - ssh 접속(2) - 도커 명령어 순으로 실행되며 원하는 화면을 볼 수 있게 될 것이다.

반응형