Server

초기 ssh 세팅하기 - putty는 이제 그만! 파워쉘에서 바로 접속하자 (키생성, config)

HoodieJun 2021. 3. 7. 00:55

ssh 란?

Secure Shell의 줄임말로 암호화 원격 접속에 쓰이는 네트워크 프로토콜 중 하나입니다.

원격 접속할 때 ssh를 많이들 이용하시죠? 저도 개인용 서버가 하나 있어서 자주 접속하는데요. 리눅스를 사용할 때는 터미널을 이용해서 바로 주소 치고 접속했지만 윈도우에서는 putty를 사용했습니다. 그런데 powershell 도 openssh가 기본으로 탑재되어있더라고요. 지금까지 몰랐네요ㅠㅠ 대부분 아시겠지만 혹시나 모르시는 분들을 위해 소개해드리려고 합니다.

여기서는 키생성부터 config 파일을 통해 이름으로 바로 접속하는 것까지 해볼게요!

 

혹시나 openssh가 설치가 안되어있어서 작동 안 하는 분들은 chocolatey를 이용해서 openssh를 설치해주세요.

choco install openssh

chocolatey 설치 & 사용법은 여기를 참고해주세요. https://hoodiejun.tistory.com/6

 

윈도우에서 명령어 한 줄로 프로그램 설치하자 - chocolatey

windows에서도 패키지 매니저를 만들었습니다. Mac의 brew Debian 계열의 apt Redhat 계열의 yum 과 같은 기능을 하는 패키지 관리 프로그램입니다. chocolatey를 사용하면 powershell로 명령어 한 줄이면 등록된

hoodiejun.tistory.com

여기부터는 원도우와 리눅스 공통입니다.

  • 키 생성

ssh 키를 생성해주도록 하겠습니다.

ssh-keygen -t rsa -b 4096

하고 나오는 부분에 엔터를 계속 누르시면 ~/.ssh 디렉터리에 id_rsa라는 프라이빗 키와 id_rsa.pub이라는 퍼블릭 키가 생성됩니다. 프라이빗 키는 열쇠이므로 자신만 갖고 있어야 합니다. 절대 어디 올리거나 배포하시면 안돼요!

퍼블릭 키는 자물쇠라고 생각하면 편한데 이 자물쇠를 원하는 컴퓨터나 서버에 보내면 자물쇠에 맞는 키를 갖고 있는 사람만이 접속할 수 있습니다.

 

  • 키 복사

그러면 id_rsa.pub 키 내용을 복사해서 authorized_keys라는 파일에 넣어줍니다. 그래야 컴퓨터가 받아들이는 자물쇠로 인식해요. 키 내용을 복사해서 붙여 넣기 귀찮으신 분들은 id_rsa.pub 파일을 서버에 보내신 다음에

cat id_rsa.pub > ~/.authorized_keys

를 실행해주세요. 저절로 복사돼서 파일이 생성됩니다. (copy-id를 이용하는 방법도 있으나 22번 포트가 아니면 안 되는 관계로 생략했습니다.)

 

  • 접속

이제 접속을 해보셔야겠죠?

ssh -p 22 -i ~/.ssh/id_rsa user@192.168.0.1

자신의 서버에 맞게 -p 포트 / -i 키 파일 위치 / 유저@ip주소 를 바꿔주세요. (22번 포트와 ~/. ssh/id_rsa는 기본값이지만 수정하실 분들을 위해 작성했습니다.)

하지만 매번 이렇게 옵션 값들과 주소를 치고 접속하려면 힘듭니다. 서버가 여러 개면 주소를 외우기도 힘들고요. 그래서 이러한 옵션과 주소를 대체할 이름을 붙여줄게요!

 

  • config 파일 생성

config 파일에 이러한 값들을 저장하고 이름을 붙여주면 putty에서 버튼 하나로 접속하듯이 간편하게 접속할 수 있습니다.

편하신 에디터를 사용해서 파일을 생성해주세요. 저는 기본 메모장을 이용했습니다.

notepad ~/.ssh/config

그리고 아래와 같이 작성해주세요.

Host ServerName
    HostName 192.168.0.1
    Port 22
    User username
    IdentityFile ~/.ssh/id_rsa

Host는 접속할 때 사용할 제 마음대로 지은 이름입니다.

HostName에 ip주소를 입력해주세요.

Port 포트번호를 입력하세요.

User에 서버 유저 이름을 입력하세요.

IdentityFile에 키 위치를 입력하세요. (서버마다 키가 다를 수 있으니 각각 입력해주시면 됩니다.)

들여 쓰기를 한 부분까지 인식합니다. 새로운 내용은 그 밑에 Host로 다시 작성하면 됩니다.

Host ServerName
    HostName 192.168.0.1
    Port 22
    User username
    IdentityFile ~/.ssh/id_rsa
    
Host ServerName2
    HostName 192.168.0.2
    Port 1234
    User nada
    IdentityFile ~/.ssh/awskey.pem

이런 식으로 서버 여러 대 혹은 한 서버에 여러 계정을 사용할 수도 있겠네요.

 

  • 접속

이렇게 이름을 지정해놓으면

ssh ServerName

ssh [지정해놓은 이름]으로 바로 접속할 수 있습니다. 너무 간편하죠. vscode 원격 접속할 때도 사용 가능합니다.

 

  • public key 복사

그런데 private 키는 생성해서 잘 갖고 있는데 public 키는 서버 생성할 때마다 복사해주려니 귀찮습니다. 한 번에 갖고 있는 public키를 서버에 명령어 한 줄로 다 복사하는 방법을 사용하겠습니다. 먼저 github 홈페이지에 로그인해주세요. 오른쪽 계정 메뉴에서 Settings를 들어갑니다. 왼쪽 메뉴에 SSH and GPG keys 가 있군요. New SSH key를 눌러서 public key 내용을 입력해줍니다. (이미 많은 분들이 ssh를 이용해서 github를 이용하고 계시죠. 저처럼 처음인 분들을 위해 적었습니다.) 정리하면

github.com 로그인 --> 계정 Settings --> SSH and GPG keys --> New SSH key

key가 잘 등록됐습니다.

 

이제 서버에 접속해서

ssh-import-id-gh user

user에 자신의 github 계정을 입력하시면 저절로 깃헙에 등록된 public 키들이 authorized_keys에 추가된 것을 확인할 수 있습니다.

 

putty대신 powershell 한 번 이용해 보세요!