본문으로 건너뛰기
로그인 둘러보기
개발·코딩·데이터베이스 · 윈도우즈 유틸

shellz

0

shellz는 Simone Margaritelli가 개발한 소형 유틸리티로, SSH, Telnet, Kubernetes, WinRM, 웹 또는 커스텀 셸을 하나의 도구에서 관리할 수 있게 해줍니다.

명령줄 도구원격 관리플러그인

소개

shellz는 Simone Margaritelli가 개발한 소형 유틸리티로, SSH, Telnet, Kubernetes, WinRM, 웹 또는 커스텀 셸을 하나의 도구에서 관리할 수 있게 해줍니다. 단일 명령줄 인터페이스를 통해 다양한 시스템에 투명하게 셸 명령을 실행할 수 있어, 예를 들어 Windows 머신, Kubernetes 포드, SSH 서버 또는 라즈베리 파이의 가동 시간을 확인하는 작업이 가능합니다. 이 도구는 Go 언어로 작성되었으며, GPL-3.0 라이선스 하에 배포됩니다.

상세정보

프로그램 소개/무엇인지

shellz는 SSH, Telnet, Kubernetes, WinRM, 웹 또는 커스텀 셸을 하나의 도구에서 관리할 수 있게 해주는 소형 유틸리티입니다. Simone Margaritelli가 개발했으며, 단일 명령줄 인터페이스를 통해 다양한 시스템에 투명하게 셸 명령을 실행할 수 있습니다. 예를 들어 Windows 머신, Kubernetes 포드, SSH 서버 또는 라즈베리 파이의 가동 시간을 확인하는 작업이 가능합니다.

주요 기능

다중 셸 유형 지원

shellz는 SSH, Telnet, WinRM, Kubernetes 및 웹 셸을 기본으로 지원하며, 커스텀 셸 타입을 위한 플러그인 시스템도 제공합니다. 이를 통해 사용자는 하나의 도구로 다양한 원격 시스템에 접근하고 명령을 실행할 수 있습니다.

아이덴티티 및 셸 관리

사용자는 ~/.shellz 폴더에 아이덴티티(JSON)와 셸(JSON) 파일을 생성하여 관리할 수 있습니다. 아이덴티티는 사용자 이름, SSH 키 또는 비밀번호, SSH 에이전트 참조 등을 포함할 수 있으며, 셸은 호스트, 포트, 타입, 그룹 및 연결 설정을 정의합니다.

그룹 및 터널링 기능

셸은 그룹으로 조직화할 수 있으며, 기본 ‘all’ 그룹이 모두 포함됩니다. 또한 reverse SSH 터널링을 지원하여 로컬 포트를 원격 호스트의 서비스로 forwarding할 수 있습니다.

플러그인 확장성

내장되지 않은 셸 타입의 경우, 사용자는 JavaScript 플러그인을 개발하여 shellz에 통합할 수 있습니다. 플러그인은 Create, Exec 및 Close 함수를 구현해야 하며, HTTP, TCP 및 프록시 지원을 위한 API를 제공받습니다.

다운로드·설치 방법

shellz의 사전 컴파일된 버전은 GitHub 릴리스 페이지에서 각 릴리스별로 제공됩니다. 소스 코드로부터 직접 빌드하려면 Go 1.8 이상이 설치되어 있어야 하며, $GOPATH/bin이 $PATH에 포함되어 있어야 합니다. 그런 다음 다음 명령을 실행하여 설치할 수 있습니다:

go get -u github.com/evilsocket/shellz/cmd/shellz

이 명령은 shellz를 다운로드하고 의존성을 설치하며 컴파일한 후, $GOPATH/bin에 shellz 실행 파일을 배치합니다.

기본 사용법/명령어

첫 번째 실행 시 shellz는 ~/.shellz 폴더와 idents, shells 하위 폴더를 자동으로 생성합니다. 사용자는 먼저 아이덴티티 파일을 생성한 다음 셸 파일을 만들어야 합니다. 예를 들어 기본 SSH 아이덴티티는 다음과 같이 생성할 수 있습니다:

{
    "name": "default",
    "username": "evilsocket",
    "key": "~/.ssh/id_rsa"
}

그리고 미디어 서버에 연결하는 셸은 다음과 같이 정의할 수 있습니다:

{
    "name": "media-server",
    "host": "media.server",
    "groups": ["servers", "media", "whatever"],
    "port": 22,
    "identity": "default"
}

설정이 완료되면 다음 명령으로 셸 목록을 확인할 수 있습니다:

shellz -list

특정 그룹의 셸만 보려면:

shellz -list -on web

셸을 활성화하거나 비활성화하려면:

shellz -enable machineA, machineB
shellz -disable machineA

모든 셸에서 명령을 실행하려면 -run 플래그를 사용합니다. 예를 들어 모든 셸에서 'id' 명령을 실행하려면:

shellz -run id

특정 셸에서만 실행하려면 -on 옵션을 추가합니다:

shellz -run id -on machineA

출력을 파일에 저장하려면 -to 옵션을 사용하며, 셸의 필드를 참조할 수 있습니다:

shellz -run uptime -to "{{.Identity.Username}}_{{.Name}}.txt"

역방향 터널을 시작하려면 터널 정의를 포함한 셸 파일을 만든 후 다음 명령을 실행합니다:

shellz -tunnel -on my.tunnel

사용 가능한 모든 플래그와 예시를 보려면 인수 없이 shellz를 실행합니다:

shellz

이런 경우에 유용합니다

다양한 원격 시스템(SSH, Telnet, WinRM, Kubernetes 등)을 정기적으로 관리해야 하는 시스템 관리자나 개발자에게 유용합니다. 하나의 도구로 여러 환경에 접근하여 명령을 실행함으로써, 별도의 클라이언트를 설치하거나 전환하는 번거로움을 줄일 수 있습니다. 예를 들어, 여러 서버의 가동 시간을 확인하거나 Kubernetes 포드에서 디버깅 명령을 실행하는 작업이 간편해집니다.

지원 환경·시스템 요구사항

shellz는 Go 언어로 작성되어 Go 1.8 이상이 설치된 환경에서 소스 코드로부터 빌드할 수 있습니다. Windows, Linux, macOS 등 Go가 지원하는 플랫폼에서 실행 가능하며, 사전 컴파일된 바이너리는 GitHub 릴리스에서 제공됩니다. 실행 시 ~/.shellz 폴더에 대한 쓰기 권한이 필요합니다.

최신 버전·업데이트

현재 버전은 1.6.0이며, 최신 릴리스 정보 및 다운로드는 GitHub 저장소의 releases 페이지에서 확인할 수 있습니다.

시스템 요구사항

별도의 시스템 요구사항이 등록되지 않았습니다.