2020. 10. 18. 16:02ㆍCentOS 7/Basic
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 접속을 할 수 있습니다.
'CentOS 7 > Basic' 카테고리의 다른 글
[CentOS 7] lsyncd와 rsync를 이용한 실시간 파일시스템 백업 (0) | 2020.11.05 |
---|---|
[CentOS 7] swap 메모리 늘리기 (0) | 2020.10.18 |
[Suricata 5] 1. CentOS 7에 suricata 5 설치하기 (0) | 2020.07.10 |
[CentOS 7] timedatectl을 이용하여 서버의 timezone 변경하기 (0) | 2020.03.20 |
[CentOS 7] ntpdate 명령어를 이용하여 NTP 서버와 시간 동기화 (0) | 2020.02.26 |