/ ssh

RHCSA : Manage security – Configure key-based authentication for SSH.

ssh rhcsa-new rhce-new redhat-new sshd service key-based auth for SSH ssh-keygen command ssh-copy-id command /etc/ssh/sshd_config
https://4am.kr/rhcsa-manage-security-configure-key-based-authentication-for-ssh/

RHCSA : 보안 관리 – SSH에 대한 키 기반 인증 구성

RHCE : SSH – Key 기반 인증 구성

RHCSA 및 RHCE 주제입니다. 아래 참조된 사이트를 번역 및 내용 추가하였습니다.

시작하기 전에

원격 호스트에 사용자명/비밀번호를 통해 접속하는 대신에, SSH는 키 기반의 인증을 사용할 수 있다. 키 기반 인증 구성 실습을 하기 위해서는 2개의 서버(클라이언트 역할(server2), 서버 역할(server1))가 필요하다.

설정 과정

1. server1에서 user01 사용자를 생성하고 비밀번호를 설정한다.
[root@server1 ~]# 
[root@server1 ~]# useradd user01
[root@server1 ~]# passwd user01
user01 사용자의 비밀 번호 변경 중
새  암호:
잘못된 암호: 암호는 사전 검사에 실패했습니다  - 너무 단순/체계적입니다  
새  암호 재입력:
passwd: 모든 인증 토큰이 성공적으로 업데이트 되었습니다.
[root@server1 ~]# 
2. server2에서도 user01 사용자를 생성하고 비밀번호를 설정한다.
[root@server2 ~]# useradd user01
[root@server2 ~]# passwd user01
user01 사용자의 비밀 번호 변경 중
새  암호:
잘못된 암호: 암호는 사전 검사에 실패했습니다  - 너무 단순/체계적입니다  
새  암호 재입력:
passwd: 모든 인증 토큰이 성공적으로 업데이트 되었습니다.
[root@server2 ~]# 
3. server1에서 생성한 사용자로 접속하고, 키-기반 인증의 비밀/공개 쌍을 생성한다(여기서는 2048비트의 비밀번호가 없는 rsa키를 생성하도록 한다).
[root@server1 ~]# su - user01
[user01@server1 ~]$ ssh-keygen -b 2048 -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/user01/.ssh/id_rsa): 
Created directory '/home/user01/.ssh'.
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/user01/.ssh/id_rsa.
Your public key has been saved in /home/user01/.ssh/id_rsa.pub.
The key fingerprint is:
05:ff:6f:b2:79:07:9e:7c:65:ae:fa:29:8b:62:ca:7d user01@server1.example.com
The key's randomart image is:
+--[ RSA 2048]----+
|        .        |
|         o       |
|          o      |
|         . .     |
|        S   .    |
|             .. o|
|            .oo=.|
|     . .o E..==.+|
|      oo.o. =*++ |
+-----------------+
[user01@server1 ~]$ 
4. server1에서 server2로 공개키를 복사한다.
[user01@server1 ~]$ ssh-copy-id -i .ssh/id_rsa.pub user01@server2.example.com
/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
user01@server2.example.com's password: 

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh 'user01@server2.example.com'"
and check to make sure that only the key(s) you wanted were added.

[user01@server1 ~]$ 
5. server2에서는 /etc/ssh/sshd_config파일을 열어 다음과 같이 옵션을 수정한다.
[root@server2 ~]# vim /etc/ssh/sshd_config 
#       $OpenBSD: sshd_config,v 1.90 2013/05/16 04:09:14 dtucker Exp $

# This is the sshd server system-wide configuration file.  See
# sshd_config(5) for more information.

# This sshd was compiled with PATH=/usr/local/bin:/usr/bin

# The strategy used for options in the default sshd_config shipped with
# OpenSSH is to specify options with their default value where
# possible, but leave them commented.  Uncommented options override the
# default value.
...
# To disable tunneled clear text passwords, change to no here!
#PasswordAuthentication yes
#PermitEmptyPasswords no
PasswordAuthentication no
...
#RSAAuthentication yes
PubkeyAuthentication yes
...
-- 끼워넣기 --                                                       157,20-26    바닥
[root@server2 ~]# 
6. server2sshd 서비스를 재시작한다.
[root@server2 ~]# systemctl restart sshd
[root@server2 ~]# 
7. server1user01 사용자인 상태에서 server2로 접속해본다.
[user01@server1 ~]$ ssh server2.example.com
[user01@server2 ~]$ 
  • 노트1: 이 설정은 root 계정에도 적용이 가능하다.
  • 노트2: -v,-vv 또는 -vvv 옵션을 통해 디버깅 정보를 얻을 수 있다.