개발/Linux

Linux - SSH(개인키, 공개키)

잇(IT) 2022. 3. 21. 10:20
728x90

 

SSH 클라이언트, 서버의 통신 과정이다.

 

OpenSSH의 설정 내용은 /etc/ssh/sshd_config에 있다.

 

- PubKeyAuthentication yes     : 공개키 인증 설정에 대한 여부를 묻는 것이다.

- AuthorizedKeyFile     .ssh/authorized_keys    : 인증키를 저장할 위치를 지정하는 것이다.

 

ssh-keygen --help 명령어를 사용하면 여러가지 옵션들을 확인 할 수 있다.

 

cmd를 열어서 ssh-keygen 명령어를 사용해서 3072bitebis라는 키 파일을 생성한다.

 

dir로 파일을 검색해보면 다음과 같이 bis 파일과 bis.pub 공개키가 생성된 것을 알 수 있다.

bis                            : private key, 절대로 타인에게 노출되면 안된다.

bis.pub                      : public key, 접속하려는 머신의 authorized_keys에 입력한다.

authorized_keys           : 머신의 .ssh 디렉토리 아래에 위치하면서 bis.pub 키의 값을 저장한다.

 

scp 명령어를 사용해 public 키를 개인키 공개키로 통신할 서버에 전송한다.

 

/etc/ssh/sshd_config 파일을 편집기로 열어서 내용을 조금 수정해준다.

 

PermitRootLogin                    : root 로그인 허용 여부 (root 로그인을 허용하면 모든 시스템의 권한을 탈취 당할 수 있으니 보안상 위험하다.)

PasswordAuthentication           : 암호 인증 기반 여부

PermitRootLoginyes로 하여 root 로그인을 임시로 허용하고, PasswordAuthentication 암호 인증 기반을 비활성화 한다.

 

sshd 데몬을 재실행 시켜줘야 변경사항이 적용된다.

 

ssh10.0.0.11 root로 로그인하게 되면 PasswordAuthentication no로 지정하였기 때문에 암호 인증 기반으로 접근조차 할수 없다고 나온다.

 

-i         : 개인키의 파일을 지정하는 옵션이다.

-i 옵션을 붙이게 되면 개인키를 지정하기 때문에 암호 인증 기반이 아닌 개인키로 인증하는 것이기 때문에 키의 암호를 입력하라는 문구가 나오고 키의 암호를 입력하게 되면 로그인 되는 것을 볼 수 있다.

 

다음으로 또 다른 서버에 pub키를 부여한다.

 

/etc/ssh/sshd_config 파일의 내용을 수정하지 않고 다른 서버에 로그인을 하게 되면 암호 인증 방식으로 로그인이 가능하다.

 

하지만 다른 서버의 /etc/ssh/sshd_config 파일을 암호 인증 기반 여부를 막고 루트 로그인을 허용하게 되면

다음과 같이 ssh를 사용하여 암호 인증 기반으로 접속을 시도하면 다음과 같이 오류가 뜨는 것을 확인 할 수 있다.

 

하지만 공개키를 위에서 미리 줬기 때문에 -i 옵션을 이용하여 다른 서버에도 접속이 가능한 것을 볼 수 있다.

 

결과적으로 하나의 키쌍을 만들어서 공개키를 각 서버에 뿌려놓으면 개인키를 가진 서버는 이에 대응하는 공개키를 가진 서버에 모두 키 인증 기반으로 로그인 할 수 있는 것을 알 수 있다.

 

단 개인키를 다른 서버에 뿌려서는 보안상의 문제가 되기 때문에 절대로 복사해서는 안된다!

728x90

'개발 > Linux' 카테고리의 다른 글

Linux - DHCP (IP주소 예약 기능)  (0) 2022.03.30
Linux - DHCP 설정  (0) 2022.03.30
Linux - Local Repository  (0) 2022.03.11
Linux - Quota (group)  (0) 2022.03.10
Linux - Quota (user)  (0) 2022.03.10