[CentOS 7] ssh config를 이용하여 간편하게 ssh접속하기

2020. 10. 18. 16:02CentOS 7/Basic

300x250
반응형
  1. SSH?
  2. ssh-keygen를 이용하여 키 생성하기
  3. 원격서버에 public key 등록
  4. 원격 접속하기
  5. config 파일을 이용한 원격접속 간편화

1. SSH?

Secure SHell

안전하지 않은 네트워크 상에서 안전하게 시스템을 관리하고 파일을 전송하도록 해주는 소프트웨어 패키지입니다.

SSH 프로토콜은 암호화를 이용하여 client와 server간의 연결을 보호합니다.

보통 원격으로 서버에 접속할 때, login username과 password를 입력해야 했다면, SSH를 이이용할 경우에는 username과 private key(개인키)를 이용하여 접속 할 수 있습니다.

로그인 할 client 컴퓨터에는 private key를 두고, 원격 접속할 컴퓨터에 public key(공개키)를 등록합니다.
public key는 원격 접속할 컴퓨터의 로그인할 계정의 홈디렉터리 상의 ~/.ssh/authorized_keys 파일에 등록하면 됩니다.

그럼, ssh 클라이언트서버(cherry)와 SSH 원격 접속을 할 대상 서버(apple, jiniworld.me)를 이용한 예시를 통해 ssh 설정방법을 상세히 알아보도록 합시다


2. ssh-keygen를 이용하여 키 생성하기

ssh-keygen은 인증키를 생성하는 명령어입니다.
설정된 암호화방식을 이용하여 private key(개인키)와 public key(공개키)를 만듭니다.

키를 생성하는 곳은 client 컴퓨터입니다.

ssh-keygen
  • -t
    • 인증키의 암호화방식을 설정합니다.
    • default : rsa
    • ex) dsa, ecdsa, ed25519, rsa, rsa1

명령어의 옵션 중, -t 옵션을 이용하면 인증키의 암호화방식을 직접 설정할 수 있는데. 별도로 설정하지 않을 경우 rsa 암호화 방식으로 키가 생성됩니다.

원격 접속을 할 컴퓨터(cherry)에 키를 생성해봅시다.
편의를 위해 ssh 관련 키를 로그인 한 계정의 .ssh 디렉토리에 위치시킵시다.

먼저, .ssh 디렉토리가 존재하는지 확인해봅니다.

[coco@cherry ~]$ ls -al
total 20
drwx------. 3 coco coco  111 Oct 15 08:11 .
drwxr-xr-x. 5 root root   50 Oct 15 03:26 ..
-rw-------. 1 coco coco  193 Oct 15 08:11 .bash_history
-rw-r--r--. 1 coco coco   18 Apr  1  2020 .bash_logout
-rw-r--r--. 1 coco coco  193 Apr  1  2020 .bash_profile
-rw-r--r--. 1 coco coco  249 Oct 15 03:27 .bashrc
-rw-------. 1 coco coco 1123 Oct 15 08:11 .viminfo

만일 .ssh 디렉토리가 없다면 .ssh 디렉토리를 생성해줍니다.
※ 디렉토리의 접근권한은 소유자 한정으로 변경합니다 (700: rwx------)

mkdir .ssh
chmod 700 .ssh

[coco@cherry ~]$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/coco/.ssh/id_rsa): /home/coco/.ssh/apple
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/coco/.ssh/apple.
Your public key has been saved in /home/coco/.ssh/apple.pub.
The key fingerprint is:
SHA256:BSG3MGcWDlV0V97N4GGEHCkrDJelumXl9g9ukvBouWs coco@cherry
The key′s randomart image is:
+---[RSA 2048]----+
|      =.XB+.o=*..|
|      .@o+..++ =o|
|       ++ oo  . =|
|       .o+.      |
|      . S.o      |
|       +.. .     |
|      .  = .o    |
|        E +..o   |
|       ooo o. .  |
+----[SHA256]-----+

키를 생성할 때, 키파일의 경로와 암호를 입력받습니다.
키파일명을 변경하고 싶다면 파일명을 입력하면 되며, 개인키를 이용한 ssh 접속시 암호도 함께 입력받고 싶다면 passphrase 설정을 추가하고, 암호 입력은 생략하고 싶다면 Enter를 누르면 됩니다.

생성된 키는 소유자만 접근할 수 있도록 변경합니다.

cd ~/.ssh
chmod 600 apple apple.pub

만일 그룹이나 일반사용자에게도 접근권한을 허용했을 경우에는 해당 키를 이용한 ssh 접속시 아래와 같은 메시지를 출력하며 접속을 제한할 수 있습니다.

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0644 for '/home/coco/.ssh/apple' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
Load key "/home/coco/.ssh/apple": bad permissions

3. 원격서버에 public key 등록

접속하고 싶은 원격 서버에 public key를 등록합니다.
public key는 접속하고자 하는 원격서버 계정의 홈디렉토리의 .ssh/authorized_keys에 등록합니다.

먼저, 접속하고자하는 원격서버(apple)의 계정의 홈디렉토리에 .ssh 디렉토리가 존재하는지 확인해봅니다.
(jiniworld.me 호스트의 jini계정)

[jini@apple ~]$ ls -al | grep '\.ssh'
drwx------   2 jini jini     4096 Oct 16 16:31 .ssh

만일 .ssh 디렉토리가 없다면 .ssh 디렉토리를 생성해줍니다.
※ 디렉토리의 접근권한은 소유자 한정으로 변경합니다 (700: rwx------)

mkdir .ssh
chmod 700 .ssh

authorized_keys 파일이 없을 경우, authorized_keys 파일을 생성해줍니다.
※ 파일의 접근권한은 소유자 한정으로 변경해줍니다.(600: -rw-------)

cd .ssh
touch authorized_keys
chmod 600 authorized_keys

※ .ssh 폴더 및 하위 파일의 접근권한 설정을 하지 않을 시 Permission denied (publickey,gssapi-keyex,gssapi-with-mic). 메시지를 출력하며 ssh 접속이 되지 않을 수 있습니다. 반드시 ssh관련 디렉토리 및 파일들의 접근권한 설정을 하도록 합시다.


authorized_keys 파일 내에 조금전에 생성한 cherry.pub 공개키를 삽입합니다.
※ authorized_keys 파일에는 cherry.pub 외에도 접근을 허용할 공개키 목록들을 여러개 설정할 수 있습니다.


4. 원격 접속하기

원격서버에 public key를 등록하였으니, cherry서버로 돌아가서 원격 접속을 해봅시다.

ssh 계정@호스트주소 -i 비밀키

[coco@cherry ~]$ ssh jini@jiniworld.me -i ~/.ssh/apple
The authenticity of host 'jiniworld.me (150.95.212.203)' can′t be established.
ECDSA key fingerprint is SHA256:m100HcZrf5Mq/WOidXEecl28yTE+HyQyIXNE5mnVS54.
ECDSA key fingerprint is MD5:8e:ae:c4:78:51:99:56:ec:aa:69:0a:2c:c0:76:9f:db.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'jiniworld.me,150.95.212.203' (ECDSA) to the list of known hosts.
  ____    _____  _____  ____    ______
 |    \  |     ||     ||    |  |   ___|
 |     \ |    _||    _||    |_ |   ___|
 |__|\__\|___|  |___|  |______||______|

Last login: Fri Oct 16 16:56:26 2020 from 175.8.231.35.bc.googleusercontent.com

host 최초 접속시, .ssh/known_hosts에 fingerprint를 저장합니다.
ssh 접속을 password 대신 비밀키를 사용하였기 때문에 비밀번호 입력을 생략하고 위와같이 로그인을 할 수 있습니다.


5. config 파일을 이용한 원격접속 간편화

ssh 계정@호스트주소 -i 비밀키

config 파일에 원격접속에 필요한 정보들을 설정해두면 config에 저장한 Host만 이용하여 간단하게 원격접속을 할 수 있습니다.

~/.ssh에 config 파일이 없다면 config 파일을 생성해줍니다.
마찬가지로 접근권한은 600으로 설정합니다.

cd .ssh
touch config
chmod 600 config

그리고, config 파일 내에 원격접속 정보를 추가합니다.

Host apple-jini
  HostName jiniworld.me
  User jini
  IdentityFile ~/.ssh/apple
  • Host
    • ssh 접속시 이용할 별명
  • HostName
    • ip 또는 host 주소
  • User
    • (원격 서버의)계정
  • IdentityFile
    • ssh 접속에 이용할 private key

[coco@cherry ~]$ ssh apple-jini

이제부터는 간편화된 이름을 이용하여 ssh 접속을 할 수 있습니다.

300x250
반응형

TAG