본문 바로가기
DevOps/Linux

[CentOS] ssh password 입력 없이 로그인 하기, ssh-keygen 공개키 생성

by 🌻♚ 2020. 12. 19.

 SSH 로그인

OS : CentOS Linux release 7.8
hosts: 222.111.71.200, 222.111.71.201
user: root

목표 : 222.111.71.200 root 계정에서 222.111.71.201 root계정으로 공개키를 이용한 ssh 접속

다른 서버에 접속하기 위해 SSH 프로토콜을 사용한다. 매번 비밀번호를 입력하고 접속하는데 이러한 과정을 ssh-keygen으로 공개키를 이용해서 생략할 수 있다. 아래 실습 내용은 222.111.71.201 root계정에 비밀번호 입력 없이 로그인하는 것을 목표로 합니다. 222.111.71.200 root 계정에서 생성한 공개키를 보내 환경구성합니다.

 

Permission denied (publickey,gssapi-keyex,gssapi-with-mic)

위와 같이 Permission denied 오류가 발생합니다. ssh 연결은 공개키를 이용한 접속과 비밀번호를 이용하는 접속으로 크게 두가지가 있는데 기본 설정에서 ssh를 비밀번호로 연결을 허용하지 않기 때문에 발생하는 오류입니다. sshd_config 파일을 수정해서 해결할 수 있습니다.

 

sudo vi /etc/ssh/sshd_config

...
PasswordAuthentication yes
...

systemctl restart sshd

접속하려는 서버에서 sshd_config에서 PasswordAuthentication을 yes로 변경해주고 sshd를 재시작해 줍니다.

 

ssh root@222.111.71.201

ip로 접속할때 비밀번호를 물어보고 접속이 가능합니다.

 

공개키를 이용한 ssh 로그인, ssh-keygen 사용

적은 수의 서버를 관리한다면 크게 문제가 없을 수 있지만... 여러대의 서버를 관리할 때는 보안적인 측면과 효율성을 위해 공개키를 생성하여 접속하려는 서버에 복사해 비밀번호 없이 로그인하는 방법을 선택할 수 있습니다.

 

공개키 생생

ssh-keygen -t rsa

명령을 실행하면 공개키가 저장될 파일 경로와 passphrase를 지정해줘야 합니다. -t 옵션은 타입을 지정하는 옵션입니다. 222.111.71.200 서버 root 계정에서 생성하기 때문에 해당 계정에 대한 공개키입니다.

 

ssh-keygen -t rsa -N '' -f /root/.ssh/id_rsa

-f 옵션은 공개키 파일을 지정할 수 있고 -N 옵션은 passphrase를 설정할 수 있다.

만약 기존에 생성한 키가 있다면 덮어쓸지 되물어본다.

 

ssh-keygen -t rsa -N '' -f /root/.ssh/id_rsa <<< y

'<' 기호를 사용해서 해당 부분도 바로 넘어갈 수 있습니다.

 

 

공개키 Host 전송

scp /root/.ssh/id_rsa.pub root@222.111.71.201:/root/id_rsa.pub

접속하려는 서버에 공개키를 먼저 보냅니다.

 

 

공개키 등록

mkdir /root/.ssh
chmod 700 /root/.ssh
touch /root/.ssh/authorized_keys
chmod 644 /root/.ssh/authorized_keys

.ssh(700) 경로나 authorized_keys(644) 파일이 없다면 생성해줍니다.

 

cat /root/id_rsa.pub >> /root/.ssh/authorized_keys

공개키를 등록해줍니다.

 

ssh root@222.111.71.201

비밀번호 입력없이 로그인이 가능합니다.

 

위의 방법대로 접속하려는 서버에 고개키를 보내고 등록하여 비밀번호 없이 접속이 가능합니다. ssh 키 인증으로 접속하는 환경 구성은 직접 접속하기 위한 이유도 있지만.... ansible이나 Foreman같이 다른 툴에서 유용하게 사용하기 위해서 사용되기도 합니다.

 

 

공개키 Remote 등록

위의 과정대로 공개키 파일을 이동시키고 직접 붙어서 등록하는 방법도 있지만... 이러한 방법을 자동으로 해주는 명령어도 있습니다.

ssh-copy-id -i ~/.ssh/id_rsa.pub root@222.111.71.201

 

ssh-keygen help 참조

태그

,

댓글0