# SSH와 SCP
## SSH(Secure Shell)
### SSH란?
SSH는 Secure Shell의 약자이다. 네트워크 프로토콜 중 하나로, 불안전한 네트워크를 통해 원격 컴퓨터에 안전하게 접근하고 명령을 실행할 수 있게 해주는 프로토콜이다. 주로 리눅스나 맥 같은 유닉스 기반 시스템에서 사용한다.
### SSH의 주요 기능
- 원격 제어 : 사용자는 로컬 컴퓨터에서 원격 컴퓨터로 접속해 명령어를 실행할 수 있다.
- 데이터 암호화 : 전송되는 모든 데이터는 암호화되어 네트워크를 통해 보안을 유지한다.
- 인증 메커니즘 : 비밀번호 인증, 공개 키 인증 등 다양한 인증 방식을 지원한다.
### SSH의 작동 원리
SSH 연결 과정은 크게 세 단계로 이루어진다
1. 암호화된 채널 설정 : 클라이언트와 서버 간에 암호화된 채널을 생성한다.
2. 서버 인증 : 클라이언트가 서버의 신뢰성을 검증한다.
3. 사용자 인증 : 사용자가 서버에 접속할 수 있음을 인증한다.
#### 예제: SSH로 서버에 접속하는 방법 (비밀번호 인증)
```bash
ssh [사용자명]@[서버 주소]
```
이 명령어를 사용하면 사용자명과 서버 주소에 해당하는 원격 컴퓨터에 접속을 시도한다. 예를 들어, 사용자명이 `ubuntu`이고 서버 주소가 `192.168.1.1`인 경우 다음과 같이 입력한다.
```bash
ssh ubuntu@192.168.1.1
```
#### 예제: SSH로 서버에 접속하는 방법 (포트 지정)
SSH는 기본적으로 22번 포트를 사용한다. 다른 포트를 사용하려면 `-p` 옵션을 사용한다.
```bash
ssh -p [포트 번호] [사용자명]@[서버 주소]
```
#### 예제: SSH로 서버에 접속하는 방법 (공개 키 인증)
공개 키 인증을 사용하려면 먼저 클라이언트에서 공개 키를 생성하고 서버에 등록해야 한다. 공개 키를 생성하려면 다음 명령어를 사용한다.
```bash
ssh-keygen -t rsa
```
이 명령어를 실행하면 `~/.ssh/id_rsa`와 `~/.ssh/id_rsa.pub` 파일이 생성된다. `id_rsa` 파일은 개인 키, `id_rsa.pub` 파일은 공개 키이다. 공개 키를 서버에 등록하려면 다음 명령어를 사용한다.
```bash
ssh-copy-id [사용자명]@[서버 주소]
```
이 명령어를 실행하면 공개 키가 서버에 등록되어 비밀번호 없이 SSH로 접속할 수 있다.
#### 예제: SSH로 서버에 접속하는 방법 (키 파일 지정)
`-i` 옵션을 사용하여 특정 키 파일을 지정할 수 있다.
```bash
ssh -i [키 파일 경로] [사용자명]@[서버 주소]
```
### SCP(Secure Copy Protocol)
### SCP란?
SCP는 SSH의 보안 기능을 기반으로 파일을 안전하게 전송하는 프로토콜이다. 네트워크를 통해 두 호스트 간에 파일을 복사할 때 사용한다.
### SCP의 주요 기능
- 파일 복사 : 원격 호스트와 로컬 호스트 간에 파일 또는 디렉토리를 복사한다.
- 보안 전송 : SSH 프로토콜을 이용하여 데이터를 암호화하여 전송한다.
### SCP의 사용 방법
#### 파일을 원격 호스트로 복사하기
```bash
scp [로컬 파일 경로] [사용자명]@[서버 주소]:[원격 파일 경로]
```
예를 들어, 로컬 컴퓨터의 `example.txt` 파일을 원격 서버 `192.168.1.1`의 `/home/ubuntu/` 디렉토리로 복사하려면 다음과 같이 실행한다.
```bash
scp example.txt ubuntu@192.168.1.1:/home/ubuntu/
```
#### 파일을 로컬 호스트로 복사하기
```bash
scp [사용자명]@[서버 주소]:[원격 파일 경로] [로컬 파일 경로]
```
예를 들어, 원격 서버 `192.168.1.1`의 `/home/ubuntu/example.txt` 파일을 로컬 컴퓨터의 현재 디렉토리로 복사하려면 다음과 같이 실행한다.
```bash
scp ubuntu@192.168.1.1:/home/ubuntu/example.txt ./
```