ssh 란?
Secure Shell의 줄임말로 암호화 원격 접속에 쓰이는 네트워크 프로토콜 중 하나입니다.
원격 접속할 때 ssh를 많이들 이용하시죠? 저도 개인용 서버가 하나 있어서 자주 접속하는데요. 리눅스를 사용할 때는 터미널을 이용해서 바로 주소 치고 접속했지만 윈도우에서는 putty를 사용했습니다. 그런데 powershell 도 openssh가 기본으로 탑재되어있더라고요. 지금까지 몰랐네요ㅠㅠ 대부분 아시겠지만 혹시나 모르시는 분들을 위해 소개해드리려고 합니다.
여기서는 키생성부터 config 파일을 통해 이름으로 바로 접속하는 것까지 해볼게요!
혹시나 openssh가 설치가 안되어있어서 작동 안 하는 분들은 chocolatey를 이용해서 openssh를 설치해주세요.
choco install openssh
chocolatey 설치 & 사용법은 여기를 참고해주세요. https://hoodiejun.tistory.com/6
여기부터는 원도우와 리눅스 공통입니다.
-
키 생성
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 한 번 이용해 보세요!
'Server' 카테고리의 다른 글
wsl2 에서 GUI 프로그램 실행하기 (0) | 2021.03.15 |
---|---|
윈도우에서 리눅스를 사용해보자 - WSL2 설치 (0) | 2021.03.07 |
원하지 않는 부팅메뉴 삭제하기 - efibootmgr (리눅스) (0) | 2021.03.06 |
TOP 20 터미널 기본 명령어 2탄 (예시와 상세한 설명) (0) | 2021.02.04 |
TOP 20 터미널 기본 명령어 1탄 (예시와 상세한 설명) (0) | 2021.01.30 |