본문 바로가기

개발 노트/Linux

[SSH] ssh 암호 없이 원격지 접속

반응형

원격지에 ssh 로 접속하거나 scp 로 파일을 보낼 때 암호를 interactive 하게 입력하지 않도록 하는 방법에 대해 정리한다.
보통 cron 등으로 스케쥴링 할 때 상호입력 없이 스크립트를 수행하기 위해 다음과 같은 방법들을 사용한다.

1. sshpass 사용

sshpass 를 사용하여 ssh 또는 scp 사용 시 한 줄에 sshpass 커맨드와 함께 미리 암호를 입력하여 암호 입력을 피할 수 있다.

01) sshpass 설치

# centos
yum install -y sshpass
# ubuntu
apt-get install -y sshpass

02) sshpass 사용

sshpass -p'password' scp ./dummy.tar.gz user@[remote_ip]:/home/user/

-p 옵션과 함께 user 의 password 를 미리 입력하고 scp 또는 ssh 명령을 사용하면 암호입력 없이 명령을 수행할 수 있다.
단, 스크립트 등에서 명령어를 작성할 때 사용자 password 가 plain 하게 보이는 단점이 있다.

2. ssh key 교환

ssh 접속 시 사용자 암호가 아닌 ssh key 를 사용하여 로그인하면 암호 입력 없이 ssh 또는 scp 명령어를 사용할 수 있다.

01) ssh-keygen 으로 ssh key 생성

ssh-keygen -t rsa -f ~/.ssh/id_rsa -q -N ""

위 명령어는 ssh-keygen 명령 시 입력해야 하는 값 들을 미리 지정하여 한줄 명령으로 생성되게 하는 명령이다.
ssh key 생성에 필요한 정보를 따로 지정하기 위해서는 ssh-keygen -t rsa 까지만 입력 후 커맨드를 따라가 보면 된다.

02) 원격지에 id_rsa.pub 키 전송

scp ~/.ssh/id_rsa.pub user@[remote_ip]:/home/user/

scp 를 사용하여 공개키를 원격지에 전송

03) 원격지에 id_rsa.pub 키를 ssh 인증 키로 등록

# login to remote server
ssh user@[remote_ip]
cat /home/user/id_rsa.pub >> /home/user/.ssh/authorized_keys

원격지에서 로그인할 사용자 ssh 의 인증 키(authorized_keys)에 접속 시도하는 client 에서 생성한 id_rsa.pub 키를 등록해 준다.
이후 client 에서는 암호 입력 없이 ssh 또는 scp 명령이 가능하다.

참고 링크

  1. sshpass 사용법
  2. ssh key 사용법
반응형