본문 바로가기
OS/Linux

[Linux] ssh 접속

by BTC_서주은 2022. 6. 24.

ヽ(゜▽゜ )- 반갑습니다 파바샐도 입니다. 

 

이번주는 ssh 접속에 대해 알아보겠습니다.

 

 

SSH 란 무엇입니까?

SSH란 Secure Shell의 줄임말로, 인터넷 연결만 되어 있어도 내 컴퓨터를 활용해서 다른 지역에 있는 컴퓨터 혹은 서버를 관리할 수 있게 컴퓨터 간 통신으 돕는 protocol입니다.

 

여기서 protocol이란, 서로 다른 통신 간 주고받는 데이터의 양식과 규칙을 뜻합니다.

브라우저가 웹페이지를 보여주기 위해 서버와 통신할 때 HTTPs protocol을 사용하는 것과 같이, 서로 다른 컴퓨터들이 shell을 통해 통신하기 위한 protocol이 필요했고, 지금 가장 많이 가용되는 것이 SSH입니다.

 

그렇다면  SSH는 어떻게 동작하는지 살펴보겠습니다.

 

ssh접속시 전체적인 진행상황

1. 클라이언트에서 private, public 키를 생성합니다.  ssh-keygen

2. 타겟서버에 public key를 복사해 놓습니다. public key는 자유롭게 공유하여도 됩니다.

3. private key는 클라이언트만 가지고 있어야하며, 누구에게도 복사해 주거나 공개하면 안됩니다.

4. 공유된 public key로 메세지를 암호화하고, 그 암호화된 메세지는 그 쌍이 되는 private key로만 해석할 수 있습니다.

5. 클라이언트에서 타겟서버로 public key를 공유합니다. 

6. 클라이언트에서 타겟서버로 ssh접속합니다.

7. 클라이언트에서 타겟서버 최초 접속 시 RSA key fingerprint로 접속여부를 확인하는 차원으로 (yes/no)를 물어본다.

8.여기서 yes를 할시에는 ~/.ssh/known_hosts 파일에 해단 RSA key정보가 등록되며, 다음접속 부터는 물어보지 않는다.
9. no를 할시에는 접속이 불가능해진다.

 

ssh접속 흐름

1. 클라이언트가 서버에 SSH연결을 요청합니다.

2. 서버는 랜덤 챌린지(랜덤 데이터 스트링)를 생성해 클라이언트에게 보냅니다.

3.클라이언트는 서버로 부터 받은 챌린지(C)를 자신이 가지고 있는 private 키로 암호화해서 암호화 된 메세지를 서버로 보냅니다.

4. 서버는 클라이언트에서 받은 암호화 된 메세지를 public 키로 해석한 후 그 결과를 2단계에서 자신이 클라이언트에게 보낸 랜덤 챌린지와 일치하는지 확인합니다. (public 키로 해석할 수 있는 메세지는 그 쌍이 되는 private 키를 가진 사람만이 만들 수 있기 때문) 일치하면 클라이언트가 인증된 것입니다.

 

주요 명령어 설명

ssh

 

a : 인증 에이전트의 전송을 불허

p : port 번호 설정

C : 모든 데이터의 압축을 요구한다

R : 로컬 호스트와 지정된 포트로 전송 될 원격 포트 설정

L : 지정된 원격 호스트와 호트에 전송할 로컬 포트 설정

ssh-keygen

b : bits 생성할 키 비트수 지정. 최소 768비트가 필요하며 디폴트 값으로 2048 비트로 설정되어 있음

C : comment 주석 입력 가능. 서버에 따라 특별한 용도로 사용 하기도 함

t : 어떠한 암호화 방식을 사용 할 것인지를 지정

    $ ssh-keygen -t rsa > rsa 암호화 방식으로 키 생성

f : 저장할 파일명 지정. 경로 지정 가능

 

 

다음시간에 더 알아보겠습니다 😊

댓글