SSH로 원격접속하기 A to Z (Key, Config)

SSH

SSH(Secured Shell)는 네트워크를 통해 원격으로 쉘에 접속하기 위한 툴 입니다.
Password 방식 부터 Private Key / Public Key로 Password 없이 사용하는 방법 그리고 config 파일 생성까지 알아보겠습니다.

OpenSSH 설치

OpenSSH는 가장 널리 사용되는 SSH패키지 입니다.
접속하고자 하는 Server와 사용중인 Client 모두 설치해야 합니다.
패키지 설치부터 해보겠습니다.

윈도우

대부분 윈도우에서 OpenSSH가 기본적으로 설치 되어 있을 것 입니다.
cmd에서 아래 명령어를 입력하세요.

ssh -V

만약 OpenSSH가 구성 되어있다면, 아래와 같이 패키지 버전 정보가 나올 것 입니다.

OpenSSH_for_Windows_9.5p1, LibreSSL 3.8.2

만약 패키지 버전 정보가 나타니지 않는다면, 설정 -> 시스템 -> 선택적 기능 -> 기능 추가를 클릭하여 사용할 수 있습니다.

OpenSSH 윈도우 설치

설치 후 ssh -V를 통해 정상적으로 설치 되었는지 확인할 수 있습니다.

리눅스 (우분투)

리눅스의 경우 배포판에 따라 다를 수 있습니다. 이번 포스트에서는 우분투를 사용하겠습니다.
우분투에서도 마찬가지로 OpenSSH가 설치되어있는지 확인하겠습니다.
Shell에서 아래 명령어를 입력하세요.

ssh -V

만약 OpenSSH가 구성 되어있다면, 아래와 같이 패키지 버전 정보가 나올 것 입니다.

OpenSSH_9.6p1 Ubuntu-3ubuntu13.11, OpenSSL 3.0.13 30 Jan 2024

만약 패키지 정보가 나타나지 않는다면, apt를 통해 설치 할 수 있습니다.

  1. 패키지 저장소 업데이트
sudo apt update
  1. openssh-server 설치
sudo apt install openssh-server
  1. SSH 실행 체크
sudo systemctl status ssh
systemctl 출력결과

Password 방식으로 접속하기

Client에서 윈도우의 경우 cmd, 리눅스의 경우 Shell에서 아래 명령어를 입력합니다.

ssh [호스트 계정]@[호스트 ip 또는 도메인주소] 

정상적으로 접속 되었다면 Password를 물어보고 호스트 계정 Password를 입력하면 접속됩니다.

Private Key / Public Key 방식으로 접속하기

접속할 때 마다 매번 비밀번호를 치는것은 매우 귀찮습니다.
Private Key / Public Key방식은 두개의 키를 한개의 쌍으로 생성하여 Private Key는 Client가, Public Key는 Server가 소유하며 접속 시 두 키를 비교하여 인증하는 방식입니다.

Private Key / Public Key 방식 설명

Key 쌍 생성

Key 생성은 Client / Server 양쪽 어디서 하든 상관 없습니다.

윈도우 / 우분투 상관 없이 cmd / Shell에 접속합니다.

ssh-keygen -t rsa

나오는 모든 질문에 엔터로 생략하고 넘어갑니다.

출력 예시

Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa
Your public key has been saved in /root/.ssh/id_rsa.pub
The key fingerprint is:
SHA256:F/SVegERar8ocE38aGkBW5+DWlW1ac0tmyF0MnGV5gc root@Ubuntu-24
The key's randomart image is:
+---[RSA 3072]----+
|        . o X*=++|
|         * B BE+=|
|        . X *.=*+|
|         * B.oo*.|
|      . S B o.o .|
|       o + . .   |
|        . . .    |
|         .       |
|                 |
+----[SHA256]-----+

Enter file in which to save the key (/root/.ssh/id_rsa): Key를 저장할 디렉토리를 지정합니다. 비우고 넘어갈시 괄호 안의 사용자 디렉토리의 .ssh폴더에 생성됩니다.

Enter passphrase (empty for no passphrase): Private Key에 비밀번호를 설정합니다. 생략 시 비밀번호를 설정하지 않습니다.

윈도우의 경우 C:\Users\[사용자]\.ssh , 우분투의 경우/home/[계정명]/.ssh에 id_rsa(Private Key), id_rsa.pub(Public Key)가 생성 되어있습니다.

Key 등록

Private Key는 Client의 .ssh 폴더에 들어 있으면 됩니다.

cat id_rsa.pub 또는 메모장에서 id_rsa.pub파일을 열어 내용을 복사 해 두고,
Password 방식으로 접속하고자 하는 Server에 접속하여/home/[계정명]/.ssh 폴더를 엽니다.

.ssh 폴더에서 authorized_keys 파일에(없다면 생성) 복사 해 두었던 Public Key를 붙여넣으면 Public Key 또한 등록 되었습니다.

이제 Client에서 SSH로 접속 할 때 password를 더이상 물어보지 않습니다.

ssh [호스트 계정]@[호스트 ip 또는 도메인주소] 

Config 파일 생성

.ssh 폴더에 config 파일을 생성합니다.

Host [호스트 별명]
HostName [호스트 ip or 도메인]
User [유저명]
port [SSH 접속포트, 기본 22]
IdentityFile [Private Key 주소, 기본 C:\Users\[유저명]\.ssh\id_rsa]

등록하고자 하는 서버가 많다면 줄바꿈 후 작성하면 됩니다.

Host host1
HostName 192.168.0.xx
User root
port 22
IdentityFile C:\Users\[유저명]\.ssh\id_rsa

Host host2
HostName xxxx.com
User root
port 22
IdentityFile C:\Users\[유저명]\.ssh\id_rsa

예시

이렇게 Config 파일을 생성했다면

ssh [호스트 별명]

위 명령어만 입력 하여도 SSH로 접속 할 수 있습니다.