# 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 ./ ```