본문 바로가기

Tech Posts

SSH Key & Host Alias 를 사용해서 비밀번호와 IP주소 입력 없이 원격서버 간편하게 접속하기

AWS, nCloud와 같은 원격 클라우드 서버를 사용해서 프로젝트를 배포하게 되면 필연적으로 ssh를 통해 원격 서버에 자주 접속하는 경우가 생긴다. 부스트캠프에서 여러 프로젝트를 배포하면서 원격 서버에 접속할 때 마다 비밀번호와 IP주소를 입력하는 것이 상당히 번거로운 일이라고 느껴졌다.

 

비밀번호와 IP주소를 잘 외워서 쓴다면 좋겠지만, 서버가 여러개가 되고 정신없이 개발하다 보면 root 비밀번호와 서버 ip주소를 찾아서 다시 클라우드 Console에 접속해야 하거나, 결국 지쳐서 Sticky Notes에 비밀번호와 IP주소를 적어놓는 경우가 생기기도 한다.

 

이렇게 주먹구구 식으로 서버에 대한 접속을 관리하기 보다는 조금 더 간편하게 접속 설정을 해 두는 것은 어떨까? SSH Key와 Host Alias를 통해서 비밀번호와 IP주소의 입력 없이 원격 서버에 SSH 접속하는 방법을 알아보자. 아래 CLI 명령어들은 모두 Bash Shell를 기준으로 한다. (Linux의 경우 Bash Shell, Window의 경우 Git Bash)

SSH 키 생성

1. 현재 Local 컴퓨터에 SSH 키가 존재하는지 확인

  • ls ~/.ssh 명령어로 우선 .ssh 폴더가 홈 디렉토리에 존재하는지 확인한다.
  • id_rsa, id_rsa.pub 파일이 있을 경우 이미 비밀키, 공개키가 있는 상태.
  • cat ~/.ssh/id\_rsa.pub 명령어로 공개키를 확인한다.

2. SSH 키가 없을 경우 ssh-keygen을 이용해서 비밀키, 공개키 만들어주기

  • ssh-keygen 명령어를 사용해서 키를 생성한다.
  • key를 저장할 위치를 물어보면 빈 상태로 엔터키 입력 (default 위치)
  • passphrase를 물어보면 빈 상태로 엔터키 두 번 입력
    • passphrase가 있으면 private key를 사용할 때 비밀번호를 물어보게 된다. 현재는 비밀번호 없이 로그인을 하고자 하므로 비밀번호 없이 키를 생성해 준다.
    • passphrase가 없는 private key는 장치 등에서 키 값이 탈취되면 위험할 수 있다. 현재는 dev 서버만을 관리하기 때문에 괜찮지만, 추후에는 ssh-agent와 같은 프로그램으로 private key의 passphrase를 캐싱해두고 주기적으로만 입력해주면 좋다.

  • ls ~/.ssh 명령어를 사용해서 ssh 키(id_rsa, id_rsa.pub 파일)가 생긴 것을 확인한다.

원격서버에 SSH 공개키 넣어주기

  • ssh-copy-id 명령어를 사용해서 공개키를 원격 서버에 등록해준다.
  • 명령어: ssh-copy-id <유저명>@<서버IP주소>
  • 아직 ssh 키가 등록되지 않았으므로 접속 시 필요한 경우 비밀번호를 입력해준다.

접속 테스트

  • 서버에 키 등록을 완료하면, 위 캡처화면과 같이 ssh 접속을 테스트해보라는 문구가 나온다.
  • 문구에 따라서 명령어로 비밀번호 없이 ssh 접속이 되는지 테스트한다.
    • 명령어: ssh <유저명>@<서버IP주소>

  • 비밀번호 입력 없이 바로 접속이 되는 것을 확인할 수 있다.
  • 혹시 접속이 되지 않을 경우, 서버에 등록된 공개키의 권한 문제일 수 있다.

  • 비밀번호를 사용해서 remote server에 접속한다.
  • remote server의 ~/.ssh/authorized_keys 파일은 본인 계정에게만 read, write 권한이 있어야 한다.
  • chmod 600 ~/.ssh/authorized-keys 명령어로 권한을 바꾸어준다.
  • remote server의 ~/.ssh 폴더는 본인에게만 read, write, execute 권한이 있어야 한다.
  • chmod 700 ~/.ssh 명령어로 권한을 바꾸어준다.
  • ls -al ~/.ssh 명령어를 통해서 권한 설정이 된 것을 확인할 수 있다.

서버 IP 주소 Local 머신에 Host Alias 잡아서 사용하기

Host 파일이란?

OS의 Hosts 파일은 도메인 이름을 IP 주소로 mapping 시켜주는 파일이다. 이 파일에 원격 서버의 별명(alias)와 주소(ip)를 등록해서 IP주소를 외우지 않고 별명으로 접속을 할 수 있다. localhost도 127.0.0.1의 alias라고 볼 수 있다.

Host 파일 찾기

  • Windows
    • C:\Windows\System32\drivers\etc\hosts
  • Linux
    • /etc/hosts
  • Mac
    • /private/etc/hosts

Host 파일 변경하기

  • Windows
    • 메모장을 관리자 권한으로 실행한다.
    • 메모장에서 열기를 눌러서 위에서 찾은 Hosts 파일을 찾아 연다.
      • 폴더의 위치는 C:\Windows\System32\drivers\etc 로 기본 세팅되어 있다.
      • 윈도우를 다른 디렉토리에 설치한 경우, C:\Windows부분을 해당 디렉토리로 변경해준다.

  • 파일에 보면 도메인을 등록하는 예시가 작성되어 있다.
  • '#' 부분은 주석이기 때문에, 파일을 맨 아래 부분에 다음 내용을 한 줄로 추가한다.
    • tab + IPv4 주소 + 별명(alias)
    • 현재 아래 파일에는 2개의 alias가 등록되어 있는 것을 볼 수 있다.
    • 별명(alias)는 외우기 쉽고 사용하기 편한 것으로 자유롭게 설정하면 된다.

hosts_file

 

  • Linux
    • 터미널을 연다.
    • vi, nano와 같은 에디터를 통해서 sudo 권한으로 hosts 파일을 연다.
      • sudo vi /etc/hosts
    • Windows와 같이 파일의 하단에 host를 추가하는 작업을 해주고 저장한다.
  • Mac (Mac을 안써서 잘 모르겠다...)
    • 터미널을 연다.
    • 텍스트에디터를 통해서 sudo 권한으로 hosts 파일을 연다.
    • 파일의 하단에 host를 추가하는 작업을 해주고 저장한다.

접속 확인

  • 이제 비밀번호 없이 원격 접속 세팅과, 원격 서버에 대한 alias 세팅이 모두 되었다.
  • ssh <유저명>@<원격서버alias> 명령어를 사용해서 서버에 접속해보자.

ssh_login

  • 비밀번호와 ip주소 입력 없이 접속이 되는 것을 확인할 수 있다.
  • host alias는 브라우저에서 원격 서버에 접속할때도 활용할 수 있다.

참고자료

www.redhat.com/sysadmin/passwordless-ssh

 

Passwordless SSH using public-private key pairs

The opinions expressed on this website are those of each author, not of the author's employer or of Red Hat. The content published on this site are community contributions and are for informational purpose only AND ARE NOT, AND ARE NOT INTENDED TO BE, RED

www.redhat.com

www.siteground.com/kb/how_to_use_the_hosts_file/

 

How to use the "hosts" file?

The hosts file is used to map hostnames (in other words domains) to IP addresses. With the hosts file, you can change the IP address that you resolve a giv

www.siteground.com