[Linux] sshpass와 alias로 ssh 자동 로그인 처리하기
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) - 도커 명령어 순으로 실행되며 원하는 화면을 볼 수 있게 될 것이다.