LogoLogo
Keeperコネクションマネージャー
Keeperコネクションマネージャー
  • 概要
  • セキュリティアーキテクチャ
  • インストール
    • ライセンスキー
    • システム要件
    • インストールの準備
    • Dockerの自動インストール
      • サービス管理
      • アップグレード
      • パッケージの追加
    • Docker Composeインストール
      • keeper/guacamole
      • keeper/guacd
      • データベースイメージ
        • keeper/guacamole-db-mysql
        • keeper/guacamole-db-postgres
      • SSLターミネーション
        • keeper/guacamole-ssl-nginx
        • カスタムSSL証明書の使用
      • アップグレード
    • バックアップと復元
  • 認証オプション
    • SAML SSO認証
      • Microsoft Azure
      • Okta
      • Google Workspace
      • OneLogin
      • Oracle
      • PingIdentity
    • TOTPを使用した2FA
    • Duoを使用した2FA
    • SSL/TLSクライアント認証
    • 複数のホスト名
    • PIV/CAC/スマートカード
    • アカウントの承認/拒否ワークフロー
    • OpenID Connect認証
    • LDAP認証
      • 複数のLDAPサーバーの使用
      • LDAP内の接続データを格納
      • LDAPとデータベースの併用
    • アカウント制限
  • 接続プロトコル
    • RDP
    • SSH
    • VNC
    • Telnet
    • リモートブラウザ分離
    • Kubernetes
    • MySQL
      • インポートとエクスポート
      • キーボードショートカット
    • PostgreSQL
      • インポートとエクスポート
      • キーボードショートカット
    • Microsoft SQL Server
      • インポートとエクスポート
      • キーボードショートカット
    • ホストインスタンスへの接続
    • 永続的リバースSSHトンネル
      • WindowsサービスとしてのAutoSSH
      • Linux - AutoSSH
      • Windows - OpenSSH
  • KCMの使用方法
    • ログイン画面
    • ホーム画面
    • 接続の作成
      • 接続の一括インポート
    • KCMの使用方法
    • ファイル転送設定
    • 接続の共有
    • セッションのレコーディングと再生
    • AWS EC2ディスカバリ
    • クレデンシャルパススルー
    • 動的接続
    • カスタムブランディング
      • ロゴを追加する
  • ボルト連携
    • KCMをボルトに接続
    • 動的トークン
    • 静的トークン
    • 複数ボルトの連携
    • EC2 Cloud Connector
    • 高度な機能
    • KeeperPAM
  • カスタム拡張機能
  • ゲストモード
  • 高可用性
  • 詳細設定
    • guacamole.properties
      • SAML 2.0認証の設定プロパティ
      • Duo二要素認証の設定プロパティ
      • 暗号化されたJSONの設定プロパティ
      • LDAP設定のプロパティ
      • MySQL/MariaDBの設定プロパティ
      • PostgreSQL設定のプロパティ
      • SQL Serverの設定プロパティ
      • ログイン試行のプロパティ
  • トラブルシューティング
  • 接続のインポート
  • 接続のエクスポート
  • リリース前テスト
  • 変更記録
  • ライセンス供与とオープンソース
  • サポート範囲
  • セキュリティアドバイザリ
  • アクセシビリティ適合性
Powered by GitBook
On this page
  • 定義
  • KCMサーバーのインストール
  • リバーストンネルの設定
  • さらに接続を作成
  • 参考資料
  1. 接続プロトコル
  2. 永続的リバースSSHトンネル

Linux - AutoSSH

インバウンド接続のない環境への接続

PreviousWindowsサービスとしてのAutoSSHNextWindows - OpenSSH

Last updated 5 months ago

定義

KCMサーバー: Keeperコネクションマネージャーを実行するインスタンス。

リモートエンドポイント: KCMサーバーからはまだ直接アクセスできない、データ着信手段のない保護されたネットワーク内のLinuxインスタンス。

KCMサーバーのインストール

Keeperコネクションマネージャーインスタンスを設定していない場合は、任意のクラウド環境内の任意のインスタンスでDocker自動インストールの手順を行います。このサービスがKCMサーバーになります。

リバーストンネルの設定

以下の手順は、クラウドのKCMサーバーからネットワークへの着信手段がない内部リモートエンドポイントへの接続を確立する方法となります。

  1. KCMサーバーのインバウンドSSHを許可

KCMサーバーで、リモートサーバーからKCMインスタンスへのインバウンドSSHポート22接続が解放されていることを確かにします。リバーストンネルを設定するために、リモートサーバーからKCMインスタンスへのアウトバウンド接続を確立します。

  1. リモートエンドポイントでSSH鍵を生成

リモートエンドポイントで、エンドポイントからKCMサーバーへのアウトバウンド接続を確立するために使用するSSH鍵のペアを作成します。

ssh-keygen -t ed25519

これにより、秘密鍵と公開鍵の2つのファイルが作成されます。 秘密鍵はそのままにして、.pubファイルだけをKCMサーバーにコピーします。

ここで、公開鍵ファイルの内容をKCMサーバーディレクトリの特殊なファイルに追加する必要があります。 /.sshディレクトリを確認し、「authorized_keys」という名前のファイルがまだない場合は、このファイルを作成します。 公開鍵ファイルid_ed25519.pubからテキストを抽出して、そのテキストをKCMサーバーの~/.ssh/authorized_keysファイルにコピーします。

テキストは以下の形式となります。

ssh-ed25519 AAAAC3NzaC1lZDI1nScLLwc3wsBH localuser@localhost

authorized_keysファイルを~/.ssh/authorized_keysとして保存します

  1. リモートエンドポイントからKCMサーバーへのSSH接続を確認

これで、パスワードプロンプトなしで (鍵を使用して)、リモートサーバーからKCMサーバーにSSH接続できるようになりました。

$ ssh username@demo.kcmdemo.com

Last login:Mon Jul  4 20:28:10 2022 from ip-10-0-1-7.my.remote
[centos@kcmdemo.com ~]$ exit
  1. リモートエンドポイントにautosshをインストール

Linuxプログラムのautosshは、永続的なSSHトンネルを作成するためのヘルパーユーティリティです。autosshのインストールはプラットフォームによって異なりますが、一般的なインストールコマンドは以下のようになります。

sudo yum install autossh

ソースからビルドするには、以下の手順を行います (Amazon Linux 2 AMIの場合)。

$ sudo yum install gcc
$ wget http://www.harding.motd.ca/autossh/autossh-1.4e.tgz
$ tar -xf autossh-1.4e.tgz
$ cd autossh-1.4e
$ ./configure
$ make
$ sudo make install
  1. KCMサーバーでGatewayPorts設定を更新

KKCMサーバーで、SSHプロセス (sshd) を変更して、リモートホスト (guacdのDockerコンテナなど) が転送ポートに接続できるようにする必要があります。デフォルトでは、sshdはリモートポート転送をループバックアドレスにバインドします。GatewayPortsの値を「clientspecified」に設定すると、クライアントは転送されたポートのバインド先のアドレスを選択できます。

  • /etc/ssh/sshd_configファイルを編集します

  • GatewayPorts行を以下のように更新します

GatewayPorts clientspecified
  • sshdを再起動します

sudo service sshd restart
  1. 永続的なリバースSSHトンネルを作成するコマンド

KCMサーバーからリモートサーバーへのSSH接続を確立するには、まずリモートサーバーから開始される永続的なリバーストンネルを作成する必要があります。

リモートエンドポイントで、以下のようなパラメータを使用して、autosshをバックグラウンドで実行します。プライベートSSH鍵へのフルパスが指定されています。これで、autosshがバックグラウンドで実行され、インスタンスが実行されている限り、トンネルはアクティブ状態を維持します。

必要なポート (HTTP/HTTPS/SSH) 以外のすべてのポートでインバウンド接続をブロックするためのファイアウォールを必ず設置してください。また、以下のコマンドの0.0.0.0をKCMサーバーのIPに変更してください。

autossh -f -M 0 -N -o "ServerAliveInterval 30" \
  -o "ServerAliveCountMax 3" \
  -R 0.0.0.0:9000:localhost:22 \
  -i /home/ec2-user/.ssh/id_ed25519 \
  user@kcm.server.xyz

これで、リモートサーバーとKCMサーバー間のリバーストンネルが確立されました。

接続を確認するために、トンネルで定義したポート (この場合、ポート9000) でローカルホストを使用して、KCMサーバーからリモートサーバーへのSSHセッションを確立できるようになりました。

KCMサーバーから、以下のコマンドを使用して接続をテストできます。

ssh -i /path/to/key -p 9000 username@localhost
  1. docker-composeを更新してホストを参照

この手順は、dockerインストールにのみ適用されます。

Dockerインストール環境では、host.docker.internalという特殊なホスト名を使用して、Keeperコネクションマネージャーホストインスタンスへの接続を確立できます。

これを設定するには、以下に示すように、/etc/kcm-setup/docker-compose.ymlファイルのguacdセクションを更新して、「extra_hosts」パラメータを追加します。

    guacd:
        image: keeper/guacd:2
        restart: unless-stopped
        environment:
            ACCEPT_EULA:"Y"
        volumes:
            - "common-storage:/var/lib/guacamole:rw"
        extra_hosts:
            - "host.docker.internal:host-gateway"

Docker環境を更新して、変更を反映させます。

sudo ./kcm-setup.run stop
sudo ./kcm-setup.run upgrade
  1. 目的のリモートサーバーへの接続を作成

リバースSSHトンネルが設定されて、Dockerコンテナがリバーストンネルにアクセスできるようになりましたので、Keeperコネクションマネージャーインターフェースから簡単に接続を作成できるようになりました。

この例では、host.docker.internalのホスト名とポート9000を参照するだけの新しい接続を作成できます。

いつものように、適切な認証パラメータがリモートサーバーの接続に入力されていることを確かにします。この場合、リバースSSHトンネルを確立してリモートサーバーにアクセスしています。

接続を保存し、「My Connections」 (接続) か「Home」 (ホーム) 画面に戻ってから、作成したばかりの接続をクリックして、正常にルーティングされたことを確認します。

さらに接続を作成

リバースSSHトンネリングを使用してさらに接続を確立したい場合は、別のポート(9001、9002など)で手順6を繰り返します。そのうえで、Keeperコネクションマネージャー内で接続を作成する場合は、指定したポート番号でhost.docker.internalを参照します。

参考資料

以下は、この設定に関して役に立つ情報が掲載されているオンライン参考資料となります。

SSH tunnelling for fun and profit: AutosshEverything CLI
Logo
How to make an SSH tunnel publicly accessible?Super User
Selecting Interface for SSH Port ForwardingServer Fault
How to connect to the Docker host from inside a Docker container?Medium
リバースSSHトンネルを使用した接続の作成
Logo
Logo
Logo