
SSH 연결 데몬 (Debian/Raspbian/Ubuntu 등용)
sidedoor는 쉘 스크립트 데몬을 사용하여 SSH 연결 또는 터널을 유지 관리합니다.
주요 사용 사례는 로컬 SSH 서버(또는 다른 포트)에 대한 원격 포트 포워드를 유지하는 것입니다. 따라서 로컬 장치는 NAT, 방화벽에 의해 차단되거나 모바일 장치에서 실용적이지 않은 수신 연결을 사용하지 않고도 액세스할 수 있습니다.
SSH 클라이언트는 sidedoor가 터널링하는 역방향 SSH 프록시를 통해 장치에 연결할 수 있습니다. 이 프록시 서버는 신뢰할 수 없으며 제3자 또는 클라우드 서비스에 의해 실행될 수 있습니다.
sidedoor는 SSH keepalive를 활성화하고 지수 백오프로 SSH를 재시도합니다. 가능한 한 빨리 다시 연결하기 위해 네트워크 인터페이스가 활성화(또는 변경)될 때 백오프를 재설정합니다.
다른 사용 사례:
sidedoor를 사용하고 계신가요? 버그 리포트, 기능 요청 - 이슈를 열어주세요! 풀 리퀘스트는 환영합니다.
sidedoor는 Debian 및 Debian 기반 시스템(Raspbian, Ubuntu, VyOS/EdgeOS)용으로 패키징되어 있지만, (OpenSSH) SSH 클라이언트가 있는 모든 POSIX 환경에서 작동해야 합니다.
sidedoor가 배포판 저장소(Debian 9+, Ubuntu 17.04+)에 있다면 패키지 관리자로 간단히 설치하세요.
sudo apt install sidedoor
그렇지 않으면 릴리스 페이지에서 deb 파일을 직접 다운로드할 수 있습니다.
sidedoor 사용자에게 전체 루트 액세스 권한을 부여하려면 sidedoor-sudo 패키지를 설치하세요.
원격 서버와 포트 포워드는 /etc/default/sidedoor에서 설정합니다. SSH 구성 파일은 /etc/sidedoor 디렉토리에 있습니다.
/etc/default/sidedoor에서 REMOTE_SERVER와 OPTIONS를 설정합니다.
OPTIONS에 전달할 일부 인수는 블로그 게시물 로컬 및 원격 포트 포워딩 설명 (예제 포함)과 ssh 매뉴얼 페이지를 참조하세요.
/etc/sidedoor 아래의 SSH 구성 파일을 편집합니다.
id_rsa: 원격 서버에 접근하기 위한 SSH 개인 키.
ssh-keygen을 사용하여 이 키를 생성할 수 있습니다
(기존 파일을 덮어쓸 것인지 묻는 메시지가 나타나면 y를 누르세요):
sudo ssh-keygen -t rsa -N '' -f /etc/sidedoor/id_rsa
해당 공개 키 id_rsa.pub는 원격 사용자의 ~/.ssh/authorized_keys 파일에 포함되어야 합니다.
known_hosts: 원격 서버의 SSH 호스트 키.
/etc/ssh/sshd_config를 편집하여 잠급니다.
ChallengeResponseAuthentication no 및 PasswordAuthentication no).ListenAddress ::1 및 ListenAddress 127.0.0.1).sshd를 다시 시작하거나 다시 로드합니다(예: sudo service ssh reload).ssh_client_config_example 파일을 수정하여 클라이언트의 ~/.ssh/config 파일에 포함시키면 ssh, scp, rsync 등으로 터널링된 SSH 서버에 쉽게 액세스할 수 있습니다.sidedoor는 최소한의 종속성으로 포트를 터널링하는 경량 솔루션을 목표로 하지만, 더 많은 기능을 갖춘 몇 가지 대안이 있습니다.
Tor는 히든 서비스로 실행되는 서버에 익명성을 제공하지만 NAT 통과도 처리합니다.
장점:
단점:
장치와 클라이언트 모두에 Tor를 설치하세요.
sudo apt install tor
노출되는 장치에서 /etc/tor/torrc를 편집하여 포트 22에 대한 히든 서비스를 만듭니다.
HiddenServiceDir /var/lib/tor/sshd/
HiddenServicePort 22 127.0.0.1:22
HiddenServiceAuthorizeClient stealth client
"client"를 클라이언트 이름의 쉼표로 구분된 목록으로 바꾸어 여러 인증 비밀을 생성합니다.
그런 다음 Tor를 다시 로드하고 양파 호스트 이름과 인증 데이터를 가져옵니다.
sudo service tor reload
sudo cat /var/lib/tor/sshd/hostname
클라이언트에서 /etc/tor/torrc를 편집하여 hostname 파일에 표시된 양파 호스트 이름과 인증 데이터를 추가합니다.
HidServAuth <hostname>.onion <secret>
그런 다음 Tor를 다시 로드하고 torsocks ssh <hostname>.onion을 실행하거나 ~/.ssh/config 파일에 ProxyCommand를 설정합니다.
ProxyCommand torsocks nc <hostname>.onion 22
autossh는 sidedoor와 마찬가지로 ssh를 시작하고 필요에 따라 다시 시작합니다.
몇 가지 차이점은 다음과 같습니다.
sidedoor는 미니멀리스트 쉘 스크립트 데몬입니다. autossh는 더 광범위하고 구성 가능한 C 프로그램입니다.
sidedoor는 SSH keepalive를 활성화합니다
(ServerAliveInterval 및 ServerAliveCountMax).
(최신 OpenSSH 버전에서 사용 가능)
autossh는 포트 포워드 루프를 통해 데이터를 보내 ssh를 모니터링합니다(이 기능은 SSH keepalive보다 먼저 나왔습니다).
단, -M 0 옵션으로 비활성화할 수 있습니다.
sidedoor는 서비스로 자동 실행되도록 설계되었으므로 패키지에는 init/systemd 스크립트와 구성 파일이 포함되어 있습니다. autossh에는 init/systemd 스크립트가 포함되어 있지 않습니다 (Debian 버그 #698390).
sidedoor는 원격 명령 및 의사-tty 할당을 비활성화합니다. 대화형 사용을 위해 SSH keepalive가 있는 autossh 또는 Mosh를 고려하세요.
sidedoor는 ssh가 0이 아닌 종료 상태로 종료되면 항상 재시도합니다.
autossh는 첫 번째 시도에서 ssh가 너무 빨리 종료되면 재시도하지 않습니다. 이는 특히 모바일 장치에서 네트워크 연결 또는 DNS 확인이 끊어졌을 때 발생할 수 있습니다.
sidedoor와 autossh 모두 재시도 백오프 로직이 있습니다.
sidedoor는 네트워크 인터페이스가 활성화될 때 재시도 백오프를 재설정하여 if-up.d 스크립트에서 SIGUSR1을 수신하여 가능한 한 빨리 다시 연결을 시도합니다. autossh에는 네트워크 상태 후크가 없습니다.
Copyright 2015-2017 Dara Adib.
이 프로그램은 자유 소프트웨어입니다: 자유 소프트웨어 재단이 발표한 GNU 일반 공중 사용 허가서(GPL) 버전 3 또는 (선택에 따라) 이후 버전의 조건에 따라 재배포 및/또는 수정할 수 있습니다.
이 프로그램은 유용하기를 바라며 배포되지만, 어떠한 보증도 없습니다. 상품성 또는 특정 목적에의 적합성에 대한 묵시적 보증조차 없습니다. 자세한 내용은 GNU 일반 공중 사용 허가서를 참조하세요.
이 프로그램과 함께 GNU 일반 공중 사용 허가서 사본을 받았을 것입니다. 그렇지 않다면 https://www.gnu.org/licenses/를 참조하세요.
선택적으로, SSH 공개 키를 /etc/sidedoor/authorized_keys 파일에 추가하여 로컬 sidedoor 사용자에게 원격 액세스를 허용합니다.
/etc/sidedoor/authorized_keys는 ~sidedoor/.ssh/authorized_keys에 대한 심볼릭 링크입니다.
설치된 경우 sidedoor-sudo 패키지는 이 사용자에게 전체 루트 액세스 권한을 제공합니다.
변경 사항을 적용하려면 sidedoor 서비스를 다시 시작합니다.
sudo service sidedoor restart