2026년인 지금도 우리는 컴퓨터 간에 파일을 주고받아야 할 일이 많습니다. 클라우드 스토리지 서비스가 plenty하게 있지만, 가끔은 빠르고 안전하며 가입 없이 쓸 수 있는 P2P 전송 방식이 필요할 때가 있죠. 바로 여기서 croc이 빛을 발합니다.
Croc란?
croc는 Rust로 작성된 명령줄 도구로, 아무 컴퓨터 두 대 사이에서 파일과 폴더를 간편하고 안전하게 전송할 수 있게 해줍니다. 다른 파일 전송 도구와 비교했을 때 croc는 다음과 같은 독특한 장점을 갖고 있습니다:
- 종단간 암호화: 모든 전송은 PAKE(Password Authenticated Key Exchange, 비밀번호 인증 키 교환) 프로토콜로 암호화됩니다
- 중계 서버 지원 전송: 공개 중계 서버를 통해 연결을 수립해 NAT와 방화벽을 우회합니다
- 재전송 지원: 중단된 전송을 이어서 할 수 있어 대용량 파일도 안심입니다
- 크로스플랫폼: Windows, macOS, Linux, BSD를 모두 지원합니다
- 포트 개방 불필요: 방화벽 설정이나 포트 포워딩이 필요 없습니다
Croc 설치하기
Linux 시스템
Fedora/RHEL/CentOS:
sudo dnf install croc
Debian/Ubuntu:
curl https://getcroc.schollz.com | bash
Arch Linux:
yay -S croc
macOS
Homebrew로 설치:
brew install croc
Windows
Chocolatey로 설치:
choco install croc
아니면 GitHub Releases에서 미리 컴파일된 바이너리를 다운로드해도 됩니다.
기본 사용법
croc 사용은 정말 간단합니다. 파일을 보내려면 두 단계면 충분하죠. 보내는 쪽에서 코드를 생성하고, 받는 쪽에서 그 코드를 입력하면 됩니다.
파일 보내기
보내는 컴퓨터에서:
croc send /path/to/file.txt
폴더 전체를 보내려면:
croc send /path/to/folder/
그러면 croc가 이런 식으로 코드를 생성해 줍니다:
Sending 'file.txt' (2.5 MB)
Code is: 1234-abcd-efgh-5678
파일 받기
받는 컴퓨터에서 그냥 이렇게 입력하면 끝:
croc 1234-abcd-efgh-5678
파일이 현재 디렉토리로 전송되기 시작합니다.
고급 사용 팁
커스텀 암호 설정
croc가 자동으로 생성해주는 대신 직접 암호를 설정하고 싶다면:
# 보내는 쪽
croc send --pass mysecretpassword file.txt
# 받는 쪽
croc --pass mysecretpassword 1234-abcd-efgh-5678
커스텀 중계 서버 사용하기
croc는 기본적으로 공개 중계 서버를 쓰지만, 직접 구축할 수도 있습니다:
# 보내는 쪽
croc --relay myrelay.example.com send file.txt
# 받는 쪽
croc --relay myrelay.example.com 1234-abcd-efgh-5678
여러 파일 전송하기
croc send file1.txt file2.txt file3.txt
와일드카드로도 가능합니다:
croc send *.pdf
표준 입력으로 전송하기
# 보내는 쪽
cat secret.txt | croc send
# 받는 쪽
croc > received.txt
보안 기능 자세히 알아보기
PAKE 암호화 프로토콜
croc는 SPAKE2+ 프로토콜을 사용해 비밀번호 인증 키 교환을 수행합니다. 이게 무슨 뜻이냐면:
- 비밀번호 자체가 전송되지 않음: 암호화된 증명만 교환됩니다
- MITM(중간자) 공격 방지: 중계 서버가 해킹당해도 공격자가 파일을 복호화할 수 없습니다
- Forward Secrecy(전방 비밀성): 매 전송마다 다른 세션 키를 사용합니다
종단간 암호화 흐름
보내는 쪽 중계 서버 받는 쪽
| | |
|---- 암호화된 파일 내용 -->| |
| |---- 암호화된 데이터转发 -->|
|<--- 키 교환 확인 ---------| |
| |<--- 키 교환 확인 ---------|
|==== 직접 P2P 전송 연결됨 ==|==== 직접 P2P 전송 연결됨 ==|
연결이 수립되면 파일은 두 컴퓨터 간에 직접 전송되고, 중계 서버는 초기 핸드셰이크에만 관여합니다.
실제 사용 시나리오
시나리오 1: 대용량 파일 빠르게 공유
동료에게 2GB짜리 영상 파일을 보내야 하는데, 회사 이메일 첨부 제한이 25MB라면? croc를 쓰면 됩니다:
croc send presentation-video.mp4
# 메신저로 동료에게 코드 알려주기
# 동료가 코드 입력해서 받기
시나리오 2: 서로 다른 네트워크의 서버 간 전송
다른 데이터센터에 있는 두 서버 간에 로그 파일을 전송할 때:
# 서버 A
croc send /var/log/application.log
# 서버 B (SSH 통해)
croc [코드]
시나리오 3: 집 NAS에 백업하기
회사 컴퓨터에서 집 NAS로 민감한 파일을 암호화해서 전송:
croc --pass "strong-password" send confidential/
성능 비교
실제 테스트를 바탕으로, croc가 다양한 네트워크 환경에서 보여준 성능은 다음과 같습니다:
| 네트워크 환경 | 평균 속도 | 비고 |
|---|---|---|
| 로컬 네트워크 | 50-100 MB/s | 직접 P2P 연결 |
| 동일 도시 광대역 | 10-30 MB/s | 업로드 대역폭 제한 영향 |
| 국가 간 전송 | 2-8 MB/s | 레이턴시가 핸드셰이크 속도에 영향 |
다른 도구와 비교
| 기능 | croc | scp | rsync | Magic Wormhole |
|---|---|---|---|---|
| 종단간 암호화 | ✅ | ❌ | ❌ | ✅ |
| NAT 통과 | ✅ | ❌ | ❌ | ✅ |
| 재전송 지원 | ✅ | ❌ | ✅ | ❌ |
| 사용 편의성 | ⭐⭐⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐⭐ |
| 크로스플랫폼 | ✅ | ⭐ | ⭐ | ✅ |
직접 중계 서버 구축하기
공개 중계 서버의 프라이버시가 걱정된다면 직접 구축할 수 있습니다:
# 설치
go install github.com/schollz/croc/v10/src/croc@latest
# 중계 서버 실행
croc relay
# 기본 리스닝 포트: 9009, 9010, 9011, 9012, 9013
Docker에서 돌리려면:
docker run -d \
-p 9009:9009 -p 9010:9010 -p 9011:9011 \
-p 9012:9012 -p 9013:9013 \
--name croc-relay \
schollz/croc:latest relay
자주 묻는 질문
Q: 전송이 중단되면 어떻게 하죠?
A: croc는 재전송을 지원합니다. 같은 명령을 다시 실행하면 중단된 지점부터 자동으로 이어집니다.
Q: 파일 무결성은 어떻게 확인하나요?
A: croc는 기본적으로 SHA-256 체크섬으로 파일 무결성을 검증합니다. 전송 완료 후 자동으로 체크합니다.
Q: 전송 속도를 제한할 수 있나요?
A: 네, --rate 파라미터를 사용하세요:
croc --rate 1mbps send file.txt
Q: 여러 명이 받을 수 있나요?
A: 네, 같은 코드를 여러 사람이 사용할 수 있고, 각자 완전한 파일 사본을 받게 됩니다.
정리
croc는 2026년 가장 추천할 만한 CLI 파일 전송 도구 중 하나입니다. 보안성, 사용 편의성, 기능을 완벽하게 조합했죠. 개발자든 시스템 관리자든 일반 사용자든 모두 혜택을 볼 수 있습니다.
주요 장점: - 🛡️ 엔터프라이즈급 암호화 보호 - 🚀 빠르고 간편한 사용 경험 - 🌐 네트워크 설정 없이도 인터넷을 가로질러 전송 - 📦 파일 크기와 폴더에 제한 없음
프로젝트 주소: - GitHub: https://github.com/schollz/croc - 공식 사이트: https://croc.schollz.com - 문서: https://github.com/schollz/croc/blob/main/README.md
다음에 빠르고 안전하게 파일을 전송해야 할 때, croc를 한번 써보세요!