
SSH 는
Secure SHell의 약자로
암호화된 보안 연결을 통해 원격 서버에 안전하게 접속하고 명령을 실행할 수 있게 해주는 네트워크 프로토콜을 가리킴.
(이를 사용하는 클라이언트 및 앱을 가리키기도 함)
이론적인 내용은 다음을 참고:
2026.01.18 - [CE] - SSH 의 Flowchart
주요 관련 파일 및 설정은 ~/.ssh 밑에 위치한다.
Secure SHell의 사용법.
일반적으로 다음과 같이 ssh로 접속함.
ssh -i ~/.ssh/id_rsa ubuntu@192.xxx.xxx.xxx
- ubuntu : 계정명을 가리킴(접속하는 계정을 기재). cloud장비들은 대부분 os이름이 계정명.
- 192.xxx.xxx.xxx : public ip address. 또는 서버 도메인명 (여기서 x는 숫자임)
- -i : IdentityFile 로 ssh 클라이언트가 사용할 개인키 파일을 지정.
- -o IdentitiesOnly=yes : -i로 지정된 키만 사용.
- 이 옵션이 없고 ssh-agent가 동작하는 환경이라면 agent의 다른 키들도 시도함.
- 이 옵션이 없으면 의도치않게 다른 키에 의해 접속될 수 있으니 주의 할것.
- -o 는 개별 설정 옵션을 지정함.
- ssh -i ~/.ssh/id_rsa -o "PasswordAuthentication=no" user@server.com : 패스워드 인증 비활성화 (공개키 인증만 가능)
- ssh -i ~/.ssh/id_rsa -o "IdentitiesOnly=yes" user@server.com : ssh-agent에 저장된 다른 키를 사용하지 않고 -i 로 지정한 키만 사용하도록 강제.
- -p 22 : ssh포트 번호를 22로 지정
public key authentication을 사용하는 것이 일반적이지만, password를 사용하는 경우도 있긴 함
이 경우엔 -i 옵션의 부분을 빼면 됨 (이후 password를 물어보는 방식)
또한 user_id@ 부분 없이 호스트(or ip address)만으로 실행할 수도 있음 (ssh 192.xxx.xxx.xxx)
이 경우 현재 ssh클라이언트를 실행하는 터미널의 session에서의 계정 id가 자동으로 사용된다.
~/.ssh/config : 호스트 설정 파일.
- ~/.ssh/config는 SSH 클라이언트의 접속 설정을 저장하는 사용자별 설정 파일
- 자주 사용하는 서버의 주소, 사용자, 포트, 키 파일 등을 이름 하나로 묶어 관리함
이 파일을 사용하면 매번 긴 명령을 입력하지 않고도 ssh server0 와 같이 짧은 별칭(<=host라고 불림)으로 접속이 가능해짐.
기본구조는 다음과 같음:
Host server0
HostName 203.0.113.10
User ubuntu
Port 2222
IdentityFile ~/.ssh/id_rsa
- Host : 접속할 서버의 alias에 해당(host라는 명칭으로 불림). 여기선 server0
- HostName: 실제 서버 IP address 또는 도메인 네임.
- User : 로그인할 사용자
- Port : ssh 포트 번호
- IdentityFile : 사용할 개인키
이는 다음과 같이 간단히 접속을 가능하게 해 줌.
ssh server0
# ssh -p 2222 -i ~/.ssh/id_rsa ubuntu@203.0.113.10
위의 설정이 여러개 놓이면 여러 ssh서버를 host 로 접속이 간단하게 이루어지게 됨.
해당 설정은 git이나 vscode에서도 참조함.
여러 사용방식
앞서 설명한 대로 ssh로 접속하여 실행하는 방법도 있으나, 간단한 명령어 수행만을 하는 방식으로도 사용가능함:
ssh remote_server free
이 경우 원격지에서 free를 수행한 결과가 출력된다.
ssh remote_server df -h
이 경우 원격지에서의 disk free의 실행결과가 출력됨.
shell expansion을 원격지에서 이루어지도록 사용하려면 single quote로 묶어서 처리할 것.
ssh remote_server 'ls *.log'
- *.log의 와일드카드 확장이 로컬이 아니라 원격 서버에서 처리
다음의 두 방식은 이 차이를 극명하게 보여줌.
ssh remote_server 'ls *.log > log_list.txt' # 원격지에 log_list.txt가 만들어짐.
ssh remote_server 'ls *.log' > log_list.txt # 로컬에 log_list.txt가 만들어짐.
포트 포워딩(-L, -R) 및 백그라운드 실행(-f)
- -L 8080:localhost:80 : ssh 클라이언트가 실행되는 컴퓨터의 8080포트를 SSH 원격서버의 80포트로 연결
- Local Port Forwarding 으로 로컬의 포트(위의 예에선 8080)를 SSH 터널을 통해 원격서버의 지정된 포트(80)로 전달(forwarding)함: 여기서 localhost는 SSH원격서버의 관점에서 로컬호스트(서버의 loopback).
- 다음 둘은 동치임:
- ssh -L 8080:localhost:80 user@remote-server.com
- ssh -L 8080:127.0.0.1:80 user@remote-server.com

- -R 8080:localhost:3000 : 원격서버의 8080번으로 들어오는 패킷이 SSH 터널을 통해 ssh 클라이언트가 실행되는 컴퓨터의 8080로.
- Remote Port Forwarding 으로 원격서버의 포트(위의 예에선 8080)로 들어오는 연결을 로컬의 특정 포트(3000)으로 전달: 여기선 SSH client가 실행되고 있는 장비의 관점에서 로컬호스트 (내 PC의 loopback).
- ssh -R 8080:localhost:3000 user@remote-server.com 의 흐름은 다음과 같음
- 3자 > remote-server.com:8080 > ssh tunnel > ssh-client장비:3000

- -N -f -L 8000:web-server.com:80 ssh-server.com
- 내컴퓨터 > SSH Tunnel > ssh-server.com > 네트워크 > web-server.com
- web-server.com과 ssh-server.com은 같은 네트워크 에 존재.
- 내컴퓨터의 8000으로 오는 모든 트래픽을 web-server.com의 80을 전달.
- -f 로 백그라운드에서 SSH세션을 실행
- -N 을 통해 명령 실행 없이 단지 포트 포워딩만 수행하는 터널링으로만 사용됨.
- 이 브라우저를 열고 localhost:8000으로 연결시 web-server.com에 연결됨.
- 내컴퓨터 > SSH Tunnel > ssh-server.com > 네트워크 > web-server.com

SSH 터널링으로 GUI앱 실행하기
- -X -C user@x-server.com
- -X : X11 기반 GUI 어플리케이션을 로컬에 포워딩하여 GUI앱을 실행케 해줌
(권장되는 방식이나 보안을 위해 일부 기능이 제한됨) - -Y : 원격서버가 로컬의 X11에 완전 접근하는 신뢰할 수 있는 포워딩 방식으로 보안은 약간 낮지만, 거의 모든 기능이 수행 가능함.
- -C : 압축 옵션.
- -X : X11 기반 GUI 어플리케이션을 로컬에 포워딩하여 GUI앱을 실행케 해줌
같이 보면 좋은 자료들
2023.12.27 - [utils/git and github] - [ssh-keygen] ssh 관련 private key와 public key 생성하기.
[ssh-keygen] ssh 관련 private key와 public key 생성하기.
ssh (secure shell)ssh는 secure shell의 약자로 네트워크 상에서 암호화된 통신을 위한 프로토콜 (및 이를 구현한 프로그램)을 가르킴. 주로 원격지의 장비에 보안이 보장된 접속을 제공하며 이를 위해
ds31x.tistory.com
2025.07.21 - [utils/git and github] - SSH Agent 사용법
SSH Agent 사용법
SSH Agent는 사용자 로그인 session(세션) 동안 ssh 키에 대한 암호를 유지하여 사용자가 한번만 암호를 입력하게 해줌.macOS SSH Agent 특징macOS는 SSH Agent가 기본적으로 launchd를 통해 자동 실행 됨Keychain과
ds31x.tistory.com
2024.12.26 - [Linux] - [linux] scp: Secure Copy Protocol
[linux] scp: Secure Copy Protocol
0.scp란?scp 는 파일을 한 컴퓨터에서 다른 컴퓨터로 안전하게 복사하기 위한 명령어 및 프로토콜SSH(Secure Shell) 프로토콜을 사용하여 데이터 전송 중에 암호화를 제공1.로컬로 특정 파일 복사해오
ds31x.tistory.com
2026.01.05 - [개발환경] - 아웃바운드 터널을 이용한 SSH 접속: Colab과 cloudflared 사례
아웃바운드 터널을 이용한 SSH 접속: Colab과 cloudflared 사례
inboudn and outboundinbound 연결외부에서 내부로 들어오는 네트워크 연결예: 외부 PC가 대상 장비의 22번 포트(SSH)로 접속Outbound 연결내부에서 외부로 나가는 네트워크 연결예: 대상 장비가 외부 웹사이
ds31x.tistory.com
'utils' 카테고리의 다른 글
| vim-plug 설치하기 (neovim의 init.lua로 설정) (0) | 2026.01.13 |
|---|---|
| wget - Web Get (0) | 2026.01.10 |
| [Utils] vim (or nvim)에서의 register (4) | 2025.08.02 |
| MacTex-jupyter notebook을 pdf로 export (0) | 2025.07.20 |
| [ipython] Shortcut (단축키) - readline editors (0) | 2025.04.09 |