
SSH接続デーモン for Debian/Raspbian/Ubuntu等
sidedoorは、シェルスクリプトデーモンを用いてSSH接続またはトンネルを維持します。
主なユースケースは、ローカルSSHサーバー(または別のポート)へのリモートポートフォワードを維持することです。これにより、NATやファイアウォールでブロックされたり、モバイル機器では実用的でない受信接続を使用せずに、ローカルデバイスにアクセスできます。
SSHクライアントは、sidedoorがトンネルするリバースSSHプロキシを介してデバイスに接続できます。このプロキシサーバーは信頼されていないものでもよく、サードパーティやクラウドサービスが運用できます。
sidedoorはSSHキープアライブを有効にし、指数バックオフでSSHを再試行します。可能な限り早く再接続するために、ネットワークインターフェイスが起動(または変更)されたときにバックオフをリセットします。
その他のユースケース:
sidedoorを使っていますか? バグ報告、機能リクエストはIssueを開いてください! プルリクエストも歓迎します。
sidedoorはDebianおよびDebianベースのシステム(Raspbian、Ubuntu、VyOS/EdgeOS)向けにパッケージ化されていますが、(OpenSSH) SSHクライアントのある任意のPOSIX環境で動作するはずです。
sidedoorがディストリビューションのリポジトリにある場合(Debian 9+、Ubuntu 17.04+)、パッケージマネージャーで簡単にインストールできます。
sudo apt install sidedoor
そうでない場合は、Releasesページから手動でdebファイルをダウンロードできます。
sidedoorユーザーに完全なrootアクセス権を付与するには、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を起動し、必要に応じて再起動します。
いくつかの違いは以下の通りです:
ServerAliveIntervalとServerAliveCountMax)を有効にします。これらはOpenSSHの最新バージョンで利用可能です。autosshはポートフォワードのループを介してデータを送信することでsshを監視します(この機能はSSHキープアライブより古い)。ただし、-M 0オプションで無効化できます。sshがゼロ以外の終了ステータスで終了した場合、常に再試行します。autosshは最初の試行でsshが早すぎて終了した場合、再試行しません。これはネットワーク接続やDNS解決が壊れている場合、特にモバイルデバイスで発生する可能性があります。sidedoorとautosshの両方に再試行バックオフロジックがあります。if-up.dスクリプトからSIGUSR1を受け取ることで、可能な限り早く再接続を試みます。autosshにはネットワーク状態フックはありません。Copyright 2015-2017 Dara Adib.
This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this program. If not, see https://www.gnu.org/licenses/.
必要に応じて、/etc/sidedoor/authorized_keysファイルにSSH公開鍵を追加することで、ローカルのsidedoorユーザーへのリモートアクセスを許可します。
/etc/sidedoor/authorized_keysは~sidedoor/.ssh/authorized_keysへのシンボリックリンクです。
インストールされている場合、sidedoor-sudoパッケージはこのユーザーに完全なrootアクセス権を提供します。
変更を適用するために、sidedoorサービスを再起動します。
sudo service sidedoor restart