Step-by-Step

SSH에 대한 이해 본문

IT 기술

SSH에 대한 이해

희주(KHJ) 2022. 2. 23. 01:00

SSH(Secure SHell)

- 원격지에 있는 컴퓨터를 안전하게 제어하기 위한 프로토콜 또는 이 프로토콜을 사용하는 프로그램을 의미

- 네트워크 상의 다른 컴퓨터에 로그인하거나, 원격 시스템으로 파일을 복사할 수 있도록 해주는 응용 프로그램 또는 프로토콜

- SSH 클라이언트와 SSH 서버의 관계로 상호작용하면서 SSH 서버가 설치된 운영체제를 제어함

- SSH는 암호화 기법을 사용하기 때문에 클라이언트와 서버 간 통신이 노출된다고 하더라도 이해할 수 없는 암호화된 문자로 보인다

- 기존의 rsh, rlogin, telnet, ftp 등을 대체하며, 강력한 인증 방법 및 안전하지 못한 네트워크에서 안전하게 통신을 할 수 있는 기능을 제공함

- 기본적으로는 22번 포트를 사용함

 

SSH Key

- 서버에 접속할 때 key를 제출하는 방식

- 공개 키 암호화 방식 및 인증 확인 응답 인증을 사용하는 SSH 서버에 대해 자체 식별하는 방식

- SSH 접속을 시도하면 SSH 클라이언트가 자신의 Private Key와 SSH 서버의 Public Key를 비교하여 일치하는지 확인

(1) Private Key (Client)

(2) Public Key (Server)

 

SSH Key 사용하는 경우

- 비밀번호 보다 높은 수준의 보안을 필요로 할 때

- 로그인 없이 자동으로 서버에 접속할 때

 

SSH Key 생성

- "ssh-keygen"이라는 툴 사용 (Unix 계열 기준으로, 윈도우는 별도의 프로그램 설치가 필요함)

$ ssh*-keygen* *-t* rsa
Generating public/private rsa key pair.

- "-t rsa"는 rsa 암호화 방식으로 키 생성한다는 뜻

Enter file in which to save the key (/home/axl/.ssh/id_rsa):

- 저장할 위치 지정, 기본 경로는 로그인한 사용자의 Home 디렉토리 아래에 .ssh임 ($HOME/.ssh)

- SSH 클라이언트는 기본적으로 이 디렉토리에 있는 키를 통해서 인증을 시도함

Enter passphrase (empty for no passphrase):

- passpharse는 키 비밀번호로, 암호화되어 키 생성에 사용됨

- 이 부분을 생략하면 보안 홀이 될 수 있기 때문에 주의한다 (자동 로그인을 원하면 생략)

Enter same passphrase again: <Type the passphrase>
Your identification has been saved in /home/axl/.ssh/id_rsa.
Your public key has been saved in /home/axl/.ssh/id_rsa.pub.
The key fingerprint is:
0b:fa:3c:b8:73:71:bf:58:57:eb:2a:2b:8c:2f:4e:37 axl@myLocalHost

 - 비밀번호를 확인하는 작업으로, 출력이 밑의 멘트와 같이 나온다면 키가 생성된 것임

[axl@asterisk1 axl] ls -al ~/.ssh/

- 키를 확인한다

 

생성된 파일 해석

(1) id_rsa : Private Key / 타인에게 노출 절대 금지

(2) id_rsa.pub : Public Key / 접속하려는 리모트 머신의 authorized_keys에 입력한다

(3) authorized_keys : 리모트 머신의 .ssh 디렉토리 아래에 위치하면서 id_rsa.pub 키 값 저장

※ SSH Server의 authroized_keys의 내용이 SSH Client의 id_rsa.pub 파일과 같아야 함

 

SSH를 이용하여 접속

// 접속
$ssh [사용자계정]@[원격지 ip]
// 해제
exit

 

SSH 옵션

-a 인증 에이전트 전송 불허
-e 세션에 대한 이스케이프 문자를 설정
-f 인증과 전송이 설정된 후에 백그라운드에서 ssh를 설정
-l 원격 시스템에 사용할 로그인 이름을 설정
-p 원격 호스트에 연결할 포트를 지정
-v 디버깅 모드 자세한 정보 표시 모드를 활성
-x X11 전송을 불가능하게 설정
-L 지정된 원격 호스트와 포트에 전송할 로컬 포트 설정
-R 로컬 호스트와 지정된 포트로 전송될 원격 포트 설정

 

[참조]

https://medium.com/@jspark141515/ssh-key-%EA%B0%9C%EC%9A%94-%EB%B0%8F-key-%ED%8C%8C%EC%9D%BC-%EC%83%9D%EC%84%B1%ED%95%98%EA%B8%B0-a38d2671db83

https://opentutorials.org/module/432/3742

https://wlsvud84.tistory.com/12

 

Comments