Post

SSH 간단 정리

SSH 간단 정리

SSH이란

SSH는 secured shell로 원격 호스트에 접속하기 위한 프로토콜이다.

Shell OS의 기능을 감싸고 이를 사용자가 사용할 수 있도록 인터페이스를 제공하는 프로그램이다.

secured + shell 클라이언트가 보안적으로 안전하게 서버의 shell에 접근하는 것

SSH 왜 사용할까?

  1. 원격 서버의 터미널을 사용하기 위해 접속
  2. 서버의 데이터를 클라이언트에 흘려보내기 위해(터널링 기법)

SSH 원리

간단하게 접속하고자 하는 서버에 자신의 public key가 있으면 이게 서버에 출입가능하도록 등록이 된 것이고 자신의 private key인증을 한다고 보면 쉽다. 실제로는 Hash, 대칭키와 함께 더 복잡한 과정으로 인증한다.

SSH 사용법

  1. 키를 생성한다.
1
$ ssh-keygen -t rsa // RSA알고리즘으로 생성한다는 뜻

그러면 ~/.ssh/에 비밀키(id_rsa)와 공개키(id_rsa.pub) 한쌍이 생성된다.

  1. 접속할 서버의 .ssh/authorized_keys에 공개키를 추가

이러면 서버에 출입 등록이 완료된 것이다.

  1. private key를 이용하여 서버에 접속
  • 명시적으로 key 파일을 지정하는 방법
1
$ ssh -i ~/ssh/id_rsa 서버주소 //-i옵션은 identity file로  private key파일 경로를 명시
  • 묵시적 위치 사용

만약 key파일을 명시하지 않으면 ~/.ssh 아래 id_rsa 같이 잘 알려져 있는 파일을 찾는다

  • SSH Agent 사용
    1
    2
    3
    4
    
    $ eval $(ssh-agent) // $ssh-agent의 출력값을 명령어로 실행, ssh-agent 띄움
    $ ssh-add 키파일경로   // ssh-agent에 키파일 추가
    $ ssh-add -d 	    // 키파일 삭제
    $ ssh-add -l	    // 키파일 조회
    

매 접속마다 key파일을 명시하는 것은 번거롭기 때문에 key를 메모리에 두고 인증할 때 처리해주는 ssh agent를 사용하면 편하다.

ssh-agent 동작 key파일 정보들을 가지고 있는 프로세스, UNIX 도메인 소켓(local machine에서 message passing 방법을 통해 효율적으로 통신)을 통해 ssh 프로세스에게 key정보를 준다.

Agent-Forwarding

ssh로 생성된 클라이언트와 서버간의 터널을 통해 원격 서버의 ssh 요청 등을 클라이언트의 ssh-agent에게 보내, 마치 원격서버에 ssh-agent가 띄워진 것 처럼 동작할 수 있다.. 따라서 key를 원격서버에 두지 않고도 key로 접속할 수 있는 다른 서버에 ssh 접속을 할 수 있다.

This post is licensed under CC BY 4.0 by the author.