- TELNET 이란?
- 인터넷 혹은 Local-Network 연결에 사용되는 "표준 네트워크 프로토콜".
- TCP/IP Stack을 갖춘 대부분의 네트워크 장비와 OS에서는, 원격을 위해~ 몇가지 종류의 텔넷 서비스를 지원 한다.
- 하지만 사실상... 보안문제 때문에 SSH 으로 대체가 되었다고 보면 된다.
- SSH 이란?
- Secure Shell.
- (네트워크 상에서) 다른 컴퓨터에 로그인, 원격명령, 파일복사 등등에 기능으로 개발된 프로토콜.
- 기존의 rsh, rlogin, 텔넬 등을 대체하기 위해서 설계 됨. (강한인증 및 보안통신)
- SSH는 암호화 기법을 사용하기 때문에, 통신이 노출된다고 하더라도 이해할 수 없는 암호화된 문자로 보인다.
- SSH 명령
- 접속 : ssh 계정@172.12.345.67
- 복사 : ssh-copy-id -i .ssh/id_rsa.pub 계정@172.12.345.67
- ...
- SSH 키설정
- 서버1)
- SSH 키생성 : ssh-keygen -t rsa
- 해당 공개키 확인 : cd .ssh 및 cat id_rsa.pub
- 서버2)
- 서버1 공개키 작성 : cd .ssh 및 vi authorized_keys
- chmod 644 authorized_keys
- 이후, 서버1 에서 -> 서버2 으로 (인증없이) SSH 접속 가능.
- 서버1)
- SSH Tunneling (Port-Forwarding)
- Local Port-Forwarding
- HostA:$ ssh -L 로컬Port:목적지IP:목적지Port 계정@HostB
- 예) ssh -L 1818:127.0.0.1:22 계정@172.1.2.3 // 나의 홀
- 예) ssh -L 1818:172.1.2.3:3306 계정@172.1.2.3 // 너의 홀
- 예) ssh -L 1818:172.9.8.7:3306 계정@172.1.2.3 // 너의 그의 홀
- Remote Port-Forwarding
- HostA:$ ssh -L 원격Port:목적지IP:목적지Port 계정@HostB
- Local Port-Forwarding
- SCP 이란?
- "Secure Shell(SSH)"을 기반으로,
- local<->remote 및 remote<->remote” 호스트 간의... 'Securely 전송' 프로토콜 or 프로그램.
- 예) scp -P 포트 {파일} 계정@아이피:/home/{디렉토리}
- 예) scp -P 포트 계정@아이피:/home/{파일} ./
- 프로토콜
- 호스트간의 파일전송(BSD RCP 기반) 및 데이터 (TCP 22) transfer & authentication 정의.
- A Client can send files to a Server. (Upload)
- A Clients can also request files from a Server. (Download)
- local <-> remote
- local Client -> (SSH 커넥션) -> (SCP Process to be Start) -> remote Host
- SCP Process
- source모드 : reads disk files and sends to ...
- sink모드 : accepts files and writes them.
- remote <-> remote
- Client -> (SSH conn to SRC host, Request that it) -> src_remote Host
- Client -> (Open SCP conn) -> dest_romote Host (Not support open two SCP conn)
- (Client 는 중개자)
- 호스트간의 파일전송(BSD RCP 기반) 및 데이터 (TCP 22) transfer & authentication 정의.
- 프로그램
- Software tool implementing the SCP protocol as a service daemon or client.
- %
- (번외) RSYNC 란?
- 동기화 및 전송 프로그램 or 프로토콜
- delta-encoding 및 Zlib 압축으로~ 용량 최소화 하고, SSH 혹은 stunnel 을 통해 데이터 보안 됨.
- 보통 (daemon-mode) Program으로 동작.
- "rsync:// " 식에, 파일 서비스 Protocol으로도 사용.
- 특정 SRC 와 DEST 의 파일(혹은 디렉토리)을 지정하여, BackUp 혹은 Mirroring 구축.
- (src,dest 둘다 remote으로 지정 할수는 없다... 당연히 중개자가 없으니...)
- 장점 (Vs SCP)
- remote-update 프로토콜을 이용해서, 파일의 차이나는 부분만 전송!
- 그래서, (SCP 보다) 더 빠르고 효율적으로 원격시스템과 통신 할수있다.
- scp basically reads the source file and writes it to the destination.
- rsync special delta transfer algorithm and a few optimizations to make the operation a lot faster.
- 압축 송/수신 으로 적은 대역폭 및 좋은 보안성.
- symlink, device, 소유자, 그룹권한 등의 '파일 부가정보'도 같이 복사 가능!
- (scp는 symlink가 있으면, 해당 원본전송)
- rsync 커맨드는 옵션이 매우 많다. (원본전송후 삭제 등등) (scp는 빈약)
- 동작방식 및 알고리즘
- local -> "rsync" 커맨드 -> SSH 접속 -> local 및 remote 간 연결 -> remode -> "rsync" 인보크 -> 파일 데이터 통신
- 대상파일 판단 :
- 파일의 크기 및 수정 시간을 체크하여 판단함.
- 매우 가볍게 처리가 가능하지만, 오차가 날수 있음.
- --checksum 옵션을 통해 파일 ‘체크썸’ 값까지 비교 가능
- 전송할 파일의 부분 데이터 판단 :
- 파일을 고정 크기에 Chunk로 나눈 뒤, Checksum을 계산하여 변화된 부분만 복사.
- 앞 부분의 정보수정으로 모든 Chunk가 밀리는 현상을 대비해서 `Rolling hash`도 사용.
- (rdiff 유틸리티는 rsync algorithm을 사용해서 두 파일간의 차이인 delta files 을 생성)
- (rdiff-backup은 delta값 증분 만큼을 저장하여, 원격간의 파일 백업을 유지)
- (rdiff 에서 사용하는 librsync 라이브러리는 rsync algorithm과 독립적으로 구현이 되어 있음)
- 실행 및 옵션
- rsync [옵션] [계정]@[src:/디렉토리] [dest 디렉토리]
- -a : archice mode ( 심볼릭 링크, 속성, 퍼미션, 소유권 등 보곤)
- -v : verbose mode (자세한 정보 출력)
- -z : compress (전송시 압축)
- -r : 하위 디렉토리 포함
- -u : --update update only (don't overwrite newer files)
- -e ssh : ssh를 이용한 rsync 동기화
- --stats : 결과보고
- --delete : 원본 서버에 없는 파일은 백업 서버에서 삭제
- --progress : rsync 진행 상항 보기
- --exclude : 제외할 파일 지정
- --bwlimit : 대역폭(복사속도) 제어
- --max-size : 특정 크기 이상 파일 제외(rsync 2.6.4 버전부터 추가된옵션)
- --min-size : 특정 크기 이하 파일 제외(rsync 2.6.7 버전부터 추가된옵션)
- 예) rsync -avz --bwlimit=1024 {파일} 계정@아이피::{디렉토리}
- 예) rsync -avzh 계정@아이피::{디렉토리} ./
- Rsync Server Mode
- 예) rsync logagent@아이피::LOG-AGENT
- 예) rsync -avz temp.txt logagent@아이피::LOG-AGENT
- rsync [옵션] [계정]@[src:/디렉토리] [dest 디렉토리]
- 동기화 및 전송 프로그램 or 프로토콜
-끝-
'통신과 프로토콜 그리고 보안' 카테고리의 다른 글
JWT (JSON Web Token) (0) | 2020.10.19 |
---|---|
OAuth (0) | 2019.11.10 |
HTTP 와 SSL 및 보안 (0) | 2019.11.10 |
SMTP , (POP3) , (IMAP) (0) | 2019.11.10 |
인터넷(Internet) 과 웹(Web) (0) | 2019.10.27 |