Rustty-Share는 Rust로 작성된 TTY(터미널) 공유 서버 및 클라이언트입니다. 원격으로 터미널 세션을 공유하고 접근할 수 있게 해주는 도구입니다.
- 🖥️ 터미널 공유: 실시간으로 터미널 세션을 여러 사용자와 공유
- 🔒 보안 연결: Dumbpipe 터널에 의해 암호화된 통신 (로컬 WebSocket은 ws:// 사용)
- 🌐 터널링: Dumbpipe를 통한 쉬운 터널링 및 공유
- ⚡ 비동기 처리: Tokio 기반의 고성능 비동기 처리
- 🎯 유연한 설정: 다양한 명령어와 인수 지원
- 🔧 읽기/쓰기 제어: 클라이언트의 쓰기 권한 제어 가능
- Rust 1.70 이상
- Cargo
git clone https://github.com/DevNergis/rustty-share.git
cd rustty-share
cargo build --release기본적으로 bash 셸을 공유하는 서버를 시작합니다. 서버 실행 시 Dumbpipe 터널이 자동으로 생성되며 공유용 티켓이 로그에 표시됩니다:
rustty-share특정 명령어를 실행하는 서버:
rustty-share htop인수가 있는 명령어:
rustty-share ls -la /home쓰기 권한을 허용하는 서버:
rustty-share -wDumbpipe 티켓으로 연결:
rustty-share connect <node-ticket>로컬 리스너 주소/인터페이스 변경(기본값: 127.0.0.1, 포트는 무작위):
rustty-share connect <node-ticket> --local-addr 127.0.0.1:9090참고: 포트 번호를 지정하지 않으면 사용 가능한 포트를 49152-65535 범위에서 무작위로 선택하며, 지정한 포트가 이미 사용 중인 경우에도 다른 포트로 자동 재시도합니다.
터미널 크기 지정:
rustty-share connect <node-ticket> --rows 24 --cols 80-w, --allow-write: 클라이언트의 터미널 쓰기 권한 허용
<TICKET>: Dumbpipe 터널 티켓 (필수 positional 인수)--local-addr <ADDR>: Dumbpipe 사용 시 로컬 바인드 인터페이스/주소 (기본값: 127.0.0.1, 포트는 무작위)--rows <ROWS>: 터미널 행 수 (자동 감지되지 않을 때)--cols <COLS>: 터미널 열 수 (자동 감지되지 않을 때)
서버 시작:
rustty-share -w클라이언트 연결:
rustty-share connect <티켓>서버에서 htop 공유:
rustty-share htop서버 시작 (터널 생성):
rustty-share -w서버가 시작되면 공유 가능한 node ticket이 자동으로 출력됩니다.
클라이언트 연결:
rustty-share connect <node-ticket>- 언어: Rust
- 비동기 런타임: Tokio
- WebSocket: tokio-tungstenite
- 터미널 처리: crossterm, pty-process
- 네트워킹: iroh (P2P 네트워킹)
- 터널링: dumbpipe
- CLI: clap
- 로깅: tracing
이 프로젝트는 LICENSE 파일에 명시된 라이선스에 따라 배포됩니다.
버그 리포트, 기능 요청, 풀 리퀘스트를 환영합니다!
- Nergis