SSH 소개: 리모트 액세스 설정, 키 사용
1. SSH란 무엇인가?
지구 반대편에 있다고 상상해봐. 그리고 설정해야 할 서버는 완전히 다른 곳에 있어. 학교 IT 담당자가 여기저기 뛰어다니는 일은 우리가 원하는 바가 아니지. 다행히도 SSH(Secure SHell)라는 서버 원격 관리를 위한 도구가 있거든.
SSH는 네트워크 프로토콜이고, 원격 컴퓨터에 안전하게 연결할 수 있게 해줘. 연결은 암호화를 사용해서 이루어지므로, 전송되는 데이터는 외부의 눈으로부터 보호돼. SSH는 데이터를 노출시키는 (러시아 우체국 엽서처럼) Telnet 같은 전통적인 방식을 대체해.
SSH의 장점
- 보안. SSH는 암호화를 사용해서 데이터를 도청으로부터 보호해.
- 유연성. 서버 원격 관리, 파일 전송, 터널링 생성 – 이 모든 게 SSH를 통해 가능해.
- 크로스 플랫폼. Linux, Windows(WSL 포함), MacOS에서도 작동돼.
이제 SSH가 왜 필요한지 이해했으니, 실습으로 넘어가 보자!
2. SSH 클라이언트 설치
서버에 연결할 수 있게 해주는 클라이언트를 설치하는 것부터 시작하자. 최신 Linux 배포판을 사용하면 SSH 클라이언트는 대부분 이미 설치되어 있을 거야. 확인해보자:
ssh -V
SSH 클라이언트 버전 정보를 볼 수 있어야 해. 만약 명령이 안 된다면, 다음과 같이 클라이언트를 설치하자 (Ubuntu 및 Debian 기반 배포판에서):
sudo apt update
sudo apt install openssh-client
MacOS에서는 SSH 클라이언트가 기본적으로 설치되어 있고, WSL에서 작업 중이라면 설치 과정은 Linux와 비슷해.
3. SSH를 통한 원격 서버 연결
서버에 연결하려면 다음 명령어를 사용해:
ssh username@hostname
username
— 원격 서버의 사용자 이름이야.hostname
— 서버의 IP 주소나 도메인 이름이야.
연결 예시:
ssh student@192.168.1.10
모든 설정이 제대로 되었다면 시스템이 비밀번호를 요청할 거야. 비밀번호를 입력한 후, 원격 서버의 콘솔에 접속하게 될 거야. 축하해! 이제 "해커 영화 속 슈퍼 악당 조작자" 직업의 절반을 마스터했어.
4. SSH 서버 설치 및 설정
SSH 서버 설치
만약 서버나 연결하고 싶은 로컬 머신에서 작업 중이라면, SSH 서버를 설치해야 해. Ubuntu에서는 이렇게 하면 돼:
sudo apt update
sudo apt install openssh-server
SSH 서비스 상태를 확인하자:
sudo systemctl status ssh
active (running)
같은 메시지가 보여야 돼. 만약 서버가 실행 중이 아니면, 다음 명령어를 사용해:
sudo systemctl start ssh
sudo systemctl enable ssh
이제 SSH 서버가 연결 요청을 받을 준비가 됐어.
SSH 서버 설정
SSH 서버의 주요 설정 파일은 /etc/ssh/sshd_config
야. 이걸 수정하려면 nano
같은 텍스트 편집기를 사용하면 돼:
sudo nano /etc/ssh/sshd_config
다음 매개변수들에 주목해:
Port 22
— SSH가 사용하는 포트.PermitRootLogin no
— root 사용자 연결 금지 (보안상no
로 유지하는 게 좋아).PasswordAuthentication yes
— 패스워드 인증 허용.
매개변수를 변경한 후 SSH 서버를 재시작해:
sudo systemctl restart ssh
5. 키 인증 사용
비밀번호 연결은 편리하지만 안전하지 않아요. 가장 좋은 방법은 SSH 키를 사용하는 거야.
SSH 키 생성
클라이언트 머신에서 다음 명령을 실행해봐:
ssh-keygen
스크립트가 키를 저장할 경로를 묻게 될 거야 (기본값은 ~/.ssh/id_rsa
). Enter를 눌러 기본값을 수락할 수도 있어. 그런 다음 암호구문에 대해 묻는데, 간단하게 하려면 비워두는 게 좋지만 (완전히 안전한 건 아니야).
명령 실행 후 키 파일들이 생성될 거야:
id_rsa
— 개인 키 (이건 공개하지 마, 네 프로젝트의 원본 코드가 출시 전에 빚더미에 오르기 전처럼).id_rsa.pub
— 공개 키 (이건 연결에 사용 가능).
서버로 키 전송하기
공개 키를 서버에 전송하려면 ssh-copy-id
명령을 사용해:
ssh-copy-id username@hostname
이 명령은 서버의 ~/.ssh/authorized_keys
파일에 네 공개 키를 추가할 거야. 이제 비밀번호 없이 연결할 수 있어.
한번 시도해봐:
ssh username@hostname
모든 게 잘 됐다면 비밀번호를 묻지 않을 거야. 이제 조금은 삶이 편해졌겠다.
SSH와 WSL
Windows에서 WSL을 사용하는 경우에도 SSH를 사용할 수 있어. WSL 터미널을 열고 SSH 클라이언트를 설치해:
sudo apt update
sudo apt install openssh-client
이후 단계는 Linux와 동일해.
6. 실습: localhost에서 SSH 설정하기
실습으로, 동일 네트워크에서 두 대의 컴퓨터 간에 SSH 연결 설정을 하거나 (localhost
를 주소로 사용하여) 자신의 컴퓨터에서 설정을 할 수 있어.
- 한 대의 컴퓨터에 SSH 서버와 클라이언트를 설치해.
- 로컬 주소로 연결해봐:
ssh your_user@localhost
- 위에서 보여준 것처럼 키를 사용한 연결을 설정해.
결과적으로, 비밀번호 입력 없이 연결이 되어야 해.
7. SSH 구성 및 별칭 사용하기
다양한 서버에 자주 접속한다면 ~/.ssh/config
파일에 SSH 구성을 추가하여 작업을 더 간단히 만들 수 있어:
Host myserver
HostName 192.168.1.10
User student
IdentityFile ~/.ssh/id_rsa
이제 간단히 다음 명령어로 접속할 수 있어:
ssh myserver
자주 발생하는 오류와 해결 방법
오류 "Connection refused". 이건 SSH 서버가 원격 머신에서 실행 중이지 않다는 뜻이야. 서버가 설치되고 실행 중인지 확인해봐.
오류 "Permission denied". 비밀번호를 틀리게 입력했거나 키 설정이 잘못되었을 가능성이 있어. 서버의
~/.ssh/authorized_keys
파일 내용을 확인해봐.오류 "No route to host". 서버가 네트워크로 접근 가능한지 확인해봐 (예:
ping
사용).
이제 SSH를 설정하고, 키를 활용하며, 흔한 문제를 피하는 방법에 대해 알았어. SSH는 작업용 서버 설정이든 집에서 Raspberry Pi를 관리하든 어디서든 사용되는 강력한 도구야.
GO TO FULL VERSION