리눅스

리눅스 접속을 위한 SSH서버 설치

코딩만만세 2024. 7. 4. 16:44

터미널을 이용하여 명령문 내리기

터미널이란?

여러분이 보고있는 검은색 창이 리눅스 터미널 입니다.

쉘(shell)이란?

터미널에서 내려진 명령을 해석하는 도구 인터페이스(도구) 입니다.

  • sh(본쉘), bash 등이 있다.

커널(kernel)이란?

운영체제와 하드웨어를 이어주는 핵심 기능 , 컴퓨터 시스템 자원들을 관리하는 역할

사용자가 명령 터미널을 통해 입력하면 쉘 이 명령을 받아 해석하고 커널 에 전달하면 커널 을 통해 하드웨어 조작을 하게 됩니다.

 

사용자가 명령 터미널을 통해 입력하면 쉘 이 명령을 받아 해석하고 커널 에 전달하면 커널 을 통해 하드웨어 조작을 하게 됩니다.


  • 리눅스는의 관리자 계정 root계정이 존재합니다.
  • 리눅스를 사용하는 모든 사람들은 root가 관리자 라는 것을 알기 때문에 관리자 계정으로 바로 로그인하는 것이 아니라, 일반 계정으로 접속해서 관리자로 전환하여 사용한다.
  • 리눅스의 명령문들은 관리자 권한이 있어야 실행시킬 수 있는 명령이 있고, 누구든 사용할 수 있는 명령이 있습니다.
  • 관리자의 권한 sudo루트 권한으로 변경하게 되면 모든 권한을 얻게 됩니다.예시sudo reboot사용자 계정으로 전환root 계정으로 전환탈출
  • exit q CTRL + C
  • sudo su - root sudo su -
  • su 계정명
  • root 계정의 전환 (관리자의 계정으로 전환 할 때는 관리자 권한이 필요합니다)
  • 리부팅 명령 (관리자의 권한으로 실행함)
  • 관리자의 권한만 빌려쓰고 싶다면 sudo 를 앞에 붙입니다.
  • sudo는 관리자의 권한을 의미한다.
  • 출력문 실행하기 echoecho 출력문전역 환경변수 확인하기
    • 리눅스는 프로그램을 실행할 때 해당 환경 변수에 등록된 값을 우선적으로 찾아서 실행하게 됩니다.
    • 예를 들어 자바 컴파일러를 실행하고 싶다면 환경 변수에 등록이 되어 있어야 합니다.
  • echo $PATH
  • echo hello world
  • echo는 커널창의 출력을 명령합니다.
  • 명령문의 매뉴얼 확인하기 man
    • 명령문을 실행할 때 하이픈( - ) 을 이용하여 옵션을 줄 수 있습니다.
    • 이런 옵션들의 확인은 man 명령문 을 이용해서 확인 가능합니다.
    • 이런 옵션들은 너무 다양하기 때문에 실제 man명령으로는 간단하게 확인하고 구글을 이용하는 편이 좋습니다.
    man 명령문

리눅스에 외부 접속 도구(putty) 를 이용해서 연결해보기

  • VMware자체에서 제공하는 커널은 확대도 되지 않고, 매우 불편하기 때문에 외부 원격 접속으로 편하게 사용하려 합니다.
  • 보통 99.99% putty를 이용해서 접속합니다
  • putty를 사용해서 접속하려면 SSH에 대한 개념을 알아야 합니다.

CS지식 올리기 - OSI 7계층(패킷의전송)

응용계층 - 어플리케이션 계층

프리젠테이션계층 - 암호화처리

세션계층 - 인증처리

전송계층 - TCP/UDP 통신의 결정

네트워크계층 - IP찾음

데이터계층 - 데이터 싣는다

물리계층 - 광케이블타고 신호전송

SSH란? - Secure Shell Protocol

SSH는 Secure Shell Protocol의 줄임말로 보안이 강화된 서버 원격 접속 및 제어 도구입니다. (

기존에 Telnet이라는 서비스를 이용해서 원격의 리눅스 서버에 접속했습니다.

텔넷의 단점

텔넷의 단점은 데이터가 암호화 되지 않는 다는 점이었고, 패킷을 가로채는 패킷 스니핑에 대상이 되었습니다.

 

 

대칭키방식

  • 하나의 키를 사용해서 암호화, 복호화 하는 방식

비대칭키방식

  • 데이터 암호화에 사용하는 공개키(public)
  • 데이터 복호화에 사용하는 비밀키(private)(본인만 가지고 있어야 합니다)
  • 공개키 + 비밀키 = 키페어(key pair)라고 부릅니다.
  • 같은 키페어 끼리만 암호화 복호화가 가능합니다.

SSH를 이용한 암호화 통신

 

예전 ssh초기 연결방식(비대칭키 교환방식)

  1. 서버에 SSH를 설치합니다. (서버는 공개키, 개인키) 를 가지고 있습니다.
  2. 클라이언트도(공개키, 개인키) 를 가지고 있습니다.
  3. 클라이언트는 SSH 연결을 요청하고, 서버에 연결을 시도합니다.
  4. 서버는 연결을 받으면, 클라이언트에게 서버의 (공개키) 을 전달합니다.
  5. 클라이언트는 (공개키)를 받습니다.
  6. 클라이언트도 서버로 공개키를 보냅니다.
  7. 서버는 공개키를 받습니다.
  8. 이후에 공개키로 암호화를 걸고 통신 합니다.
  9. 암호화된 데이터는 서로의 개인키로 복호화 합니다.

이 방식은 문제가 있습니다.

바로 중간자가 양쪽 공개키를 탈취하고, 내가가진(공개키) 를 양쪽에 전달해버리면?

내가 가진 비밀키를 사용해서 복호화를 할 수 있습니다.

요즘 ssh방식 - (비대칭키 + 대칭키)

  1. 서버 ssh연결시 서로 공개키를 교환합니다. (여기까지는 이전과 동일 - 비대칭키 방식)
  2. 디피헬만 알고리즘을 이용해서, 서버, 클라이언트는 동일한 비밀키(세션키)를 생성합니다.
  3. 이제 서버, 클라이언트는 비밀키(세션키) 둘다 가지고 있습니다
  4. 비밀키(세션키) 를 사용하여 암호화 전송을 합니다. (대칭키 암호화)
  5. 단. 여기서 비밀키(세션키)는 개별 세션에 대해 생성되며 더 이상 필요하지 않은 즉시 사라진다.

쉽게 말해 한번더 암호화 한다는 의미입니다.

    1. 내부적으로 돌아가는 서비스들 확인하기

service service --status-all

      1. apt를 사용해서 ssh서버 설치하기
      • 향상된 패키지 관리 도구 apt방식을 활용합니다. (5강에서 확인)
      • apt는 인터넷을 통해 원격에 저장된 패키지를 다운로드 받아서 설치해주는 향상된 패키지 관리 도구 입니다.
      • 패키지 관리 도구 업데이트

apt-get update

      • 패키지 찾기

apt search <패키지명>

      • 패키지 다운로드하기

apt-get install <패키지명>

    1.  

실행

    1.  

sudo apt-get update sudo apt-get search openssh sudo apt-get install openssh-server

      1. 가상머신 리눅스의 아이피 확인하기

ip addr

      1. putty를 설치하고 접속하기

https://www.putty.org/

 

HostName란에 접속방법

  • 계정명@아이피주소 (ssh 22번포트)