← Back to Blog

[Ubuntu] SSH Remote Login Setup

computer science > programming

2026-07-064 min read

#computer-science #programming #ubuntu #linux #ssh #server

SSH란?

SSH는 Secure Shell의 약자이다. 네트워크를 통해 다른 컴퓨터에 안전하게 접속해서 terminal 명령을 실행할 때 사용한다.

예를 들어 내 노트북에서 Ubuntu desktop이나 Ubuntu server에 접속하려면 다음처럼 사용할 수 있다.

ssh username@192.168.0.10

여기서 역할은 다음과 같다.

역할의미
SSH client접속을 시도하는 컴퓨터
SSH server접속을 받아주는 컴퓨터

즉 내 노트북에서 서버에 접속한다면 노트북은 client이고, 접속 대상 Ubuntu 컴퓨터는 server이다.


전체 흐름

Ubuntu 기준으로 SSH 접속을 설정하는 흐름은 다음과 같다.

접속 대상 컴퓨터에 openssh-server 설치
SSH service 실행 확인
접속 대상 컴퓨터의 IP 주소 확인
client에서 ssh username@ip-address 실행
필요하면 SSH key 인증 설정
자주 접속하면 ~/.ssh/config 작성

같은 공유기나 같은 내부 네트워크에 있는 컴퓨터끼리 접속하는 경우가 가장 단순하다. 외부 인터넷에서 집이나 연구실 컴퓨터로 접속하려면 port forwarding, VPN, cloud 보안 그룹 같은 추가 설정이 필요하다.


SSH server 설치

접속을 받을 Ubuntu 컴퓨터에서 openssh-server를 설치한다.

sudo apt update
sudo apt install openssh-server

설치 후 SSH service 상태를 확인한다.

sudo systemctl status ssh

실행 중이면 다음과 비슷하게 보인다.

Active: active (running)

만약 실행 중이 아니라면 다음 명령어로 실행한다.

sudo systemctl start ssh

부팅할 때 자동으로 SSH server가 켜지게 하려면 enable한다.

sudo systemctl enable ssh

IP 주소 확인

접속 대상 Ubuntu 컴퓨터의 IP 주소를 확인한다.

ip addr

출력이 길다면 다음 명령어가 더 보기 편하다.

hostname -I

예를 들어 다음처럼 출력될 수 있다.

192.168.0.10

이 IP 주소를 client에서 사용한다.

ssh username@192.168.0.10

여기서 username은 접속 대상 Ubuntu 컴퓨터의 사용자 이름이다.

현재 Ubuntu 사용자 이름은 다음 명령어로 확인할 수 있다.

whoami

SSH 접속하기

client 컴퓨터에서 다음 명령어를 실행한다.

ssh username@192.168.0.10

처음 접속하면 다음과 비슷한 메시지가 나온다.

Are you sure you want to continue connecting (yes/no/[fingerprint])?

접속하려는 IP가 맞다면 yes를 입력한다. 그다음 접속 대상 Ubuntu 계정의 password를 입력하면 login된다.

접속에 성공하면 prompt가 접속 대상 컴퓨터 기준으로 바뀐다.

username@ubuntu-server:~$

접속을 종료하려면 다음 명령어를 입력한다.

exit

방화벽 확인

Ubuntu에서 ufw 방화벽을 사용 중이라면 SSH port를 허용해야 한다.

sudo ufw status

SSH를 허용한다.

sudo ufw allow ssh

또는 port 번호를 직접 허용할 수도 있다.

sudo ufw allow 22/tcp

방화벽을 활성화하지 않은 상태라면 다음 명령어가 필요할 수 있다.

sudo ufw enable

단, 원격 서버에서 작업 중이라면 방화벽을 켜기 전에 SSH 허용 규칙이 먼저 들어가 있는지 반드시 확인해야 한다. 그렇지 않으면 현재 접속이 끊긴 뒤 다시 접속하지 못할 수 있다.


SSH key 생성

password 대신 SSH key로 접속하면 더 편하고 안전하다.

client 컴퓨터에서 key를 생성한다.

ssh-keygen -t ed25519 -C "your_email@example.com"

기본 경로를 사용하면 다음 위치에 key가 생성된다.

~/.ssh/id_ed25519
~/.ssh/id_ed25519.pub

두 파일의 역할은 다르다.

파일역할
id_ed25519private key, 절대 공유하면 안 됨
id_ed25519.pubpublic key, server에 등록해도 됨

private key는 내 컴퓨터에만 있어야 한다. public key만 접속 대상 서버에 등록한다.


public key 등록

가장 간단한 방법은 ssh-copy-id를 사용하는 것이다.

ssh-copy-id username@192.168.0.10

이 명령어는 client의 public key를 server의 다음 파일에 추가한다.

~/.ssh/authorized_keys

이후 다시 접속한다.

ssh username@192.168.0.10

정상적으로 설정되었다면 password 없이 SSH key로 접속된다.


ssh-copy-id가 없을 때

ssh-copy-id를 사용할 수 없다면 public key를 직접 복사할 수 있다.

client에서 public key 내용을 확인한다.

cat ~/.ssh/id_ed25519.pub

출력된 한 줄을 server의 ~/.ssh/authorized_keys에 추가한다.

server에서 다음 명령어를 실행한다.

mkdir -p ~/.ssh
nano ~/.ssh/authorized_keys

public key를 붙여넣고 저장한다.

권한도 맞춰준다.

chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

권한이 너무 열려 있으면 SSH가 key 파일을 무시할 수 있다.


SSH config 작성

매번 IP 주소와 사용자 이름을 입력하기 귀찮다면 client의 ~/.ssh/config를 작성한다.

nano ~/.ssh/config

예를 들어 다음처럼 작성한다.

Host myserver
    HostName 192.168.0.10
    User username
    IdentityFile ~/.ssh/id_ed25519

이제 다음처럼 짧게 접속할 수 있다.

ssh myserver

여러 서버를 사용한다면 config에 여러 entry를 추가하면 된다.

Host lab-pc
    HostName 192.168.0.20
    User brace
    IdentityFile ~/.ssh/id_ed25519

Host aws-server
    HostName 13.125.10.20
    User ubuntu
    IdentityFile ~/.ssh/aws-key.pem

SSH port 변경

기본 SSH port는 22이다. 필요하다면 server에서 port를 변경할 수 있다.

설정 파일을 연다.

sudo nano /etc/ssh/sshd_config

다음 줄을 찾거나 추가한다.

Port 2222

설정을 확인한다.

sudo sshd -t

문제가 없다면 SSH service를 재시작한다.

sudo systemctl restart ssh

방화벽도 새 port를 허용해야 한다.

sudo ufw allow 2222/tcp

client에서는 -p option으로 port를 지정한다.

ssh -p 2222 username@192.168.0.10

~/.ssh/config에서는 다음처럼 쓴다.

Host myserver
    HostName 192.168.0.10
    User username
    Port 2222

원격 서버에서 port를 바꿀 때는 기존 SSH session을 끊지 말고, 새 terminal에서 새 port 접속이 되는지 먼저 확인하는 것이 좋다.


외부 네트워크에서 접속하기

같은 공유기 안에서는 내부 IP로 접속할 수 있다.

ssh username@192.168.0.10

하지만 외부 네트워크에서 집이나 연구실 컴퓨터로 접속하려면 추가 설정이 필요하다.

대표적인 방법은 다음과 같다.

방법설명
port forwarding공유기에서 외부 port를 내부 컴퓨터의 SSH port로 전달
VPN같은 내부 네트워크처럼 접속
cloud serverpublic IP가 있는 서버에 직접 접속
Tailscale 같은 mesh VPN복잡한 공유기 설정 없이 사설 네트워크 구성

공유기 port forwarding을 사용할 때는 보안에 주의해야 한다. 가능하면 password login을 끄고 SSH key 인증을 사용하는 것이 좋다.


password login 비활성화

SSH key 접속이 정상적으로 되는 것을 확인한 뒤 password login을 끌 수 있다.

server에서 설정 파일을 연다.

sudo nano /etc/ssh/sshd_config

다음 값을 설정한다.

PasswordAuthentication no
PubkeyAuthentication yes

설정을 확인한다.

sudo sshd -t

SSH service를 재시작한다.

sudo systemctl restart ssh

주의할 점은 SSH key 접속이 확실히 되는 상태에서만 password login을 꺼야 한다는 것이다. 잘못 설정하면 서버에 다시 접속하지 못할 수 있다.


자주 발생하는 문제

Connection refused

다음 error는 SSH server가 실행 중이 아니거나 port가 열려 있지 않을 때 발생한다.

ssh: connect to host 192.168.0.10 port 22: Connection refused

server에서 SSH service를 확인한다.

sudo systemctl status ssh

필요하면 실행한다.

sudo systemctl start ssh

Connection timed out

다음 error는 네트워크 연결이 되지 않을 때 자주 발생한다.

ssh: connect to host 192.168.0.10 port 22: Connection timed out

확인할 것은 다음과 같다.

IP 주소가 맞는가?
같은 네트워크에 있는가?
방화벽에서 SSH port를 허용했는가?
공유기 port forwarding이 필요한 상황인가?

Permission denied

다음 error는 사용자 이름, password, SSH key 중 하나가 맞지 않을 때 발생한다.

Permission denied (publickey,password).

먼저 사용자 이름을 확인한다.

whoami

그리고 client에서 verbose mode로 접속해본다.

ssh -v username@192.168.0.10

어떤 key를 시도하는지, 어떤 단계에서 실패하는지 확인할 수 있다.

WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED

접속 대상 컴퓨터를 재설치했거나 같은 IP에 다른 컴퓨터가 연결되면 다음 경고가 나올 수 있다.

WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!

접속 대상이 정말 내가 아는 컴퓨터가 맞는지 먼저 확인해야 한다. 확실하다면 client에서 기존 host key를 제거한다.

ssh-keygen -R 192.168.0.10

그다음 다시 접속한다.

ssh username@192.168.0.10

정리

Ubuntu에서 SSH 접속을 설정하려면 접속 대상 컴퓨터에 SSH server를 설치해야 한다.

핵심 명령어는 다음과 같다.

sudo apt install openssh-server
sudo systemctl status ssh
hostname -I
ssh username@ip-address

자주 접속한다면 SSH key와 config를 함께 설정하는 것이 좋다.

ssh-keygen -t ed25519
ssh-copy-id username@ip-address
nano ~/.ssh/config

외부 네트워크에서 접속할 때는 port forwarding보다 VPN이나 mesh VPN을 쓰는 방식이 더 관리하기 쉬운 경우가 많다. 어떤 방식이든 password login을 그대로 열어두는 것보다 SSH key 인증을 사용하는 편이 안전하다.