ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Linux] SSH (Secure Shell)
    Linux & Shell 2023. 9. 17. 11:39
    728x90
    반응형

     

    - 목차

     
     

     

     

    관련 글

    https://westlife0615.tistory.com/296

     

    RSA 암호화 이해하기

    - 목차 * 소개 RSA 는 Rivest-Shamir-Adleman 의 약자입니다. 암호화 방식의 하나로 Rivest, Shamir, Adleman 세 사람에 의해서 개발된 암호화 방식이라 세 사람의 이름의 첫 글자를 따서 RSA 라고 불립니다. RSA

    westlife0615.tistory.com

     

    * 소개

    SSHSecure Shell Protocol 의 약자입니다.
    두 컴퓨터 간의 통신을 위한 프로토콜로써
    보안상 안전하게 다른 컴퓨터에 접근할 수 있게 도와주는 프로토콜입니다.
    SSHClient - Server 구조로 동작하며,
    Client 컴퓨터가 Server 컴퓨터에 접근하는 방식을 취합니다.
     
    Secure Shell 의 이름에서 알 수 있듯이
    클라이언트와 서버 사이의 SSH 연결이 맺어지면 서버는 클라이언트에게 Secure Shell 을 제공합니다.
    클라이언트는 Secure Shell 을 통하여 원격 서버가 마치 로컬 환경에 위치하는 것처럼 컨트롤할 수 있습니다.
    이런 방식으로 클라이언트는 서버의 커널와 통신할 수 있게 됩니다.
     
    SSH 프로토콜을 한마디로 요약하자면,
    Client - Server 구조 위에서 암호화된 통신을 한다고 생각하면 될 것 같습니다.
     
     

    * 작동 원리

    SSH 는 기본적으로 Client - Server 간의 네트워크 통신이므로 TCP/IP 위에서 동작합니다.
    이 말의 뜻은 원격지 서버에 SSH 프로토콜로 접속하기 위해서 IP 주소와 Port 번호를 필요로합니다.
    일반적으로 SSH 프로토콜은 22 번 포트를 사용하며, SSH 통신을 위한 프로세스가 22 포트를 리스닝합니다.
    이러한 SSH 프로그램을 SSH Daemon 이라고 합니다.
    SSH 통신을 위해서 클라이언트와 서버 모두 SSH 프로세스가 구동되고 있어야합니다.
     
    이제 클라이언트와 서버가 연결이 되었다면 통신을 위해서 오고가는 메시지를 암호화해야합니다.
    SSH 는 비대칭키 암호화 방식을 사용합니다.
    클라이언트의 비밀키, 서버의 공개키가 암-복호화에 사용됩니다.

     

     

    * 예시

     

    맥북에서 우분투 서버에 SSH 접속하는 과정을 설명하도록 하겠습니다.

    아이디 - 패스워드 기반 접속

     

    1. 우분투 서버에 ssh 데몬을 설치해줍니다.

    sudo apt update -qq
    sudo apt install openssh-server -y

     

    2. 우분투 서버의 /etc/ssh/ssh_config 설정 파일이 아래의 설정을 추가합니다.

    PasswordAuthentication yes 가 설정되어야 아이디 패스워드 기반의 접속이 가능해집니다.

    PasswordAuthentication yes

     

    3. 서버의 IP 주소를 확인합니다.

    같은 LAN 에 위치한 서버이기 때문에 클라이언와 서버 모두 같은 LAN 네트워크 대역에 존재합니다.

    ip addr
    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
        link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
        inet 127.0.0.1/8 scope host lo
           valid_lft forever preferred_lft forever
        inet6 ::1/128 scope host 
           valid_lft forever preferred_lft forever
    2: enp0s1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
        link/ether 62:3f:03:84:f4:c7 brd ff:ff:ff:ff:ff:ff
        inet 192.168.64.11/24 brd 192.168.64.255 scope global dynamic noprefixroute enp0s1
           valid_lft 85463sec preferred_lft 85463sec
        inet6 fddf:98e:4c9d:c932:c7d1:c521:ced0:ed26/64 scope global temporary dynamic 
           valid_lft 603866sec preferred_lft 85280sec
        inet6 fddf:98e:4c9d:c932:bb26:8dfe:7585:e986/64 scope global dynamic mngtmpaddr noprefixroute 
           valid_lft 2591923sec preferred_lft 604723sec
        inet6 fe80::ef30:8f32:9902:2797/64 scope link noprefixroute 
           valid_lft forever preferred_lft forever

     

    <위 과정을 요약한 이미지 자료>

     
    4. 클라이언트인 맥북에서 해당 우분투 서버에 접속합니다.
     
    ssh 사용자이름@서버 ip 입력 후 비밀번호를 입력하면 아래와 같이 접속이 가능합니다.

    ssh ubuntu@192.168.64.11
    
    ubuntu@192.168.64.11's password: 
    Welcome to Ubuntu 22.04.3 LTS (GNU/Linux 6.2.0-26-generic aarch64)
    
     * Documentation:  https://help.ubuntu.com
     * Management:     https://landscape.canonical.com
     * Support:        https://ubuntu.com/advantage
    
    
    Last login: Sun Sep 17 06:05:40 2023 from 192.168.64.1
    ubuntu@ubuntu:~$ who
    ubuntu   :0           2023-09-17 05:55 (:0)
    ubuntu   pts/1        2023-09-17 06:14 (192.168.64.1)

     
     
     

    비대칭키 기반 접속

     

    1. 클라이언트인 맥북에서 암호화를 위한 키를 생성합니다.
    ssh-keygen 명령어로 private key 와 public key 를 생성할 수 있습니다.

     

    ssh-keygen

     

    ssh-keygen 과정에서 키의 저장 위치와 비밀번호를 물어보는데요.
    Enter file in which to save the key (/Users/user/.ssh/id_rsa): 
    Enter passphrase (empty for no passphrase): 
     
    키의 저장 위치는 /Users/user/.ssh/id_rsa 가 default 이고, passphrase 는 빈값으로 두어도 상관없습니다.
     
    2. 클라이언트의 파일시스템에 존재하는 public key 를 서버로 옮깁니다.
     
    아래와 같은 명령어로 IP 주소가 192.168.64.11 인 우분투 서버로 public key 를 옮길 수 있습니다.

    ssh-copy-id -i ~/.ssh/id_rsa.pub ubuntu@192.168.64.11
    /usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "~/.ssh/id_rsa.pub"
    /usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
    /usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
    ubuntu@192.168.64.11's password: 
    
    Number of key(s) added:        1
    
    Now try logging into the machine, with:   "ssh 'ubuntu@192.168.64.11'"
    and check to make sure that only the key(s) you wanted were added.

     

    3. ssh-copy-id 명령어 이후에 서버로 옮겨진 파일을 확인
     
    아래의 명령어로 옮겨진 public key 를 확인할 수 있습니다.

    cat ~/.ssh/authorized_keys

     
    4. 비대칭키 기반의 ssh
     
    아래의 명령어로 간단히 접속됨을 확인할 수 있습니다.

    ssh ubuntu@192.168.64.11

    반응형

    'Linux & Shell' 카테고리의 다른 글

    Linux date 알아보기  (0) 2023.09.20
    Linux /etc/resolv.conf  (0) 2023.09.13
    [linux] jq 사용법  (0) 2023.09.12
    Linux awk 알아보기  (0) 2021.12.04
    Linux File Descriptor  (0) 2019.07.25
Designed by Tistory.