ssh를 접속하는 가장 기본적인 방법은 bash의 ssh 명령어를 사용하는 것이다.

기본적인 사용방법은 다음과 같이 직관적이다.

ssh <ip-address>

다만, 앞선 명령어는 현재 로컬 머신의 ip 주소를 그대로 가지고 서버에 접속을 시도하기 때문에, 해당 의도가 아닌 경우라면 비밀번호와 유저가 일치하지 않아 로그인이 안되는 문제가 있다.

ssh <username>@<ip-address>

때문에 주로 위의 명령어처럼 유저를 명시하고 사용을 권장하곤 한다.

이는 argument로도 전달이 가능한데, 바로 -l 옵션을 통해서이다.

ssh -l <username> <ip-address>

 

여기까지가 기본적인 명령어 사용방법이였다.

ssh 명령어가 있으니 이를 활용하여 ssh 접속을 스크립트 실행을 통해 간소화해보고 싶었다.

문제는 비밀번호를 넣는 부분인데, ssh 명령어를 통해서는 비밀번호를 스크립트로 넣을 수가 없었다.

-p 옵션이 있기 때문에, 될 것 같은 느낌도 들지만 해당 옵션은 포트를 명시하는 옵션이다.

때문에, 비밀번호를 가지고 ssh 접속을 하기 위해서는 sshpass 라는 패키지를 설치해줘야 한다.

# Ubuntu or Debian
sudo apt-get install sshpass

# macOS
brew install http://git.io/sshpass.rb

이후 다음 명령어를 통해 비밀번호를 스크립트 안에 밀어넣을 수 있다.

sshpass -p <password> ssh -l <username> <ip-address>

 

ssh가 보안 상의 이유로 비밀번호를 노출시키지 못하도록 한 것을 sshpass가 끄집어냈다는 느낌이 든다. 사실 근데 대부분의 상황에서 편리하자고 sshpass를 쓰는게 맞을까 하는 의문은 든다. 혹여나 스크립트가 노출이 되어버리면 곧바로 컴퓨터에 대한 모든 권한을 넘겨주는 것이기에, sshpass는 최대한 지양하는 것이 맞을 것 같다.

그럼에도 ssh를 자동으로 접속해야만 하는 불가피한 상황이 있을 수 있으니 해당 상황에서는 꼭 방화벽을 철처하게 설정해줘야 하지 싶다.