반응형

SSH(Secure SHell) 란

SSH는 Tatu Ylonen(twitter: @tjssh)에 의해 개발되었으며 보안되지 않은 네트워크(e.g. 인터넷)를 통한 보안 시스템 관리 및 파일 전송을 가능하게 하는 소프트웨어 패키지로써 거의 모든 데이터 센터와 모든 대기업에서 사용되고 있다.

 

아래와 같이 SSH 프로토콜을 이용해 데이터를 암호화해서 클라이언트와 서버 간의 전송 데이터를 안전하게 보호한다. 모든 사용자의 인증, 데이터 송수신 및 파일 전송등은 암호화되어 전달된다. SSH에 대한 보다 자세한 내용은 http://ssh.com/academy/ssh 에서 보다 상세하게 알아볼 수 있다.

 

 

SSH 동작 방식

SSH 키(Key)는 공개키(public key)와 비공개키(private key)로 이루어진다.  일반적으로 서버에서 키를 생성하면 공개키와 비공개키가 만들어지며 비공개 키를 서버에 두고 공개 키는 클라이언트에 두게 된다.(클라이언트는 SSH Client, 서버는 SSH Server가 설치된 컴퓨터를 의미한다)  클라이언트가 SSH를 통해 접속을 시도하면 SSH Client가 자신의 비공개 키와 서버의 비공개키를 비교해서 둘이 일치하는지를 확인한다.

 

 

 

Linux 혹은 macOS에서 SSH Key 만들기

유닉스 계열의 운영체제나 macOS, Linux등은 OpenSSH를 기본으로 포함하고 있거나 손쉽게 설치 후 바로 ssh-keygen 명령어르를 통해 key를 생성할 수 있다.

 

ssh-keygen -t rsa 
# -t 옵션을 통해 암호화 방식을 선택할 수 있음 (기본값은 RSA)

터미널에서 위와 같이 ssh-keygen을 입력하면 생성된 key 값을 어디에 둘 것인지 묻는다. 특별히 지정하지 않으면 기본으로 지정된 디렉토리에 저장된다.

다음으로 key에 사용할 암호를 입력한다.

모두 입력하면 아래와 같이 키 값이 생성되었다고 출력된다.

 

기본으로 생성된 디렉토리 $HOME/.ssh 에 가서 생성된 파일을 확인해 본다

 

여기에서 id_rsa가 개인키이고 id_rsa.pub가 공개키가 된다. rsa 파일의 권한은 600(개인만 읽고 쓸수 있음), pub 파일은 644(다른 사용자도 읽을 수 있다.) 인것을 확인할 수  있다. 접속하고자 하는 클라이언트에게 공개키를 등록해 이 서버에 접속할 수 있게 할 수 있다.

 

 

클라이언트에게 공개키 전송

scp id_rsa.pub [사용자@서버ip:id_rsa.pub]

 

 

전송받은 공개키를 클라이언트에서 등록

전송받은 id_rsa.pub 파일을 $HOME/.ssh 폴더에 authorized_keys 파일에 등록한다. 만약 클라이언트 시스템에 .ssh 폴더가 없다면 chmod700으로 폴더를 만들고 다음의 명령어를 통해 전달 받은 id_rsa.pub 파일을 authorized_keys에 등록해 준다.

cat $HOME/id_rsa.pub >> $HOME/.ssh/authorized_keys

참고로 authorized_keys 파일은 클라이언트의 .ssh 디렉토리에 존재하며 id_rsa.pub 키의 값을 저장한다.

 

 

SSH 서버 접속

아래의 명령어를 통해 접속 가능

ssh -p [port] [사용자id]@[서버ip 혹은 dns명]

 

 

AWS에서 SSH 를 통한 접속

일반적으로 아마존이나 오픈스텍과 같은 클라우드에서 서버 리소스 접근을 위한 공개키를 생성할때는 사용자 접속툴의 범용성을 높이기 위해 id_rsa.pub 대신 *.pem(윈도우) 혹은 *.ppk(리눅스) 파일을 공개키로 많이 사용한다.

AWS 상의 EC2와 같은 리소스에 접근하기 위해서는 SSH 접근을 위한 키페어를 생성해야 한다.

 

AWS 관리 콘솔로 접속해 서비스 > EC2 > 네트워크 및 보안>키 페어 에 접속한다.

 

필요한 키 페어 정보를 입력하고 윈도우에서 PuTTY와 함께 사용할려면 .ppk 확장자로 그외 맥이나 리눅스에서 ssh 클라이언트를 통해 접속 할려면 .pem 확장자로 저장한다.

 

저장하면 다운로드 폴더에 입력한 키 페어 이름.ppk 파일이 다운로드 받아져있다.

 

이제 PuTTY를 통해 .ppk 파일을 선택(PuTTY > Connection > SSH > Auth로 들어가 파일 Browse 버튼 클릭 후 다운받은 .ppk 파일 선택) 후 원격의 aws ec2에 접속할 수 있다.

 

물론 원격의 aws ec2에 접속을 위해선 aws상에 ec2가 설치되어 있어야 하고 이 ec2에 SSH 키페어를 앞서 만든 파일로 지정해 주어야 한다.

 

서비스 > EC2 > 인스턴스 > 인스턴스 시작> 프리티어가능한 Amazon Linux 선택

 

1단계부터 7단계까지 세부정보 구성단계 중 3단계에서 퍼블릭 IP 자동 할당 활성화

다음 7단계까지 기본값으로 설정 후 인스턴스 시작하기 버튼을 클릭한다. 그러면 기존 생성된 키페어 혹은 새로운 키 페어를 생성하라는 창이 뜨게 되고 앞서 생성한 키 페어를 선택하도록 한다.

 

선택한 EC2가 생성완료 후 정상 부팅을 하게 되면 PuTTY나 ssh 를 통해 아래와 같이 접속을 시도해 본다.

* 위 캡쳐의 예는 macOS에서 ssh를 통해 미리 생성한 aws의 EC2 인스턴스에 접속한 모습

ssh -i 다운받은 공개키페어 파일 ec2-user@원격서버공인IP

 

이번 포스팅은 여기까지 끝~

반응형

'Etc' 카테고리의 다른 글

IntelliJ단축키 for mac  (0) 2021.08.31

+ Recent posts