반응형
원격지에 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 명령이 가능하다.
참고 링크
반응형
'개발 노트 > Linux' 카테고리의 다른 글
[Docker] 우분투 이미지 한글 입력 안될 때 (0) | 2021.06.18 |
---|---|
[EC2] Ubuntu 서버 Django 설치 (0) | 2020.10.11 |
[EC2] Linux code-server 개발환경 구축하기 (2) | 2020.10.06 |
[Kernel] 리눅스 서버의 TCP 네트워크 성능을 결정짓는 커널 파라미터 (0) | 2020.05.14 |
[GDB] 자식 프로세스 디버깅 (0) | 2020.01.06 |