SSH Push (トンネルを使用)接続メソッド

SSH Push (トンネルを使用)は、クライアントでSUSE Managerサーバに直接接続できない環境で使用されます。この環境では、DMZと呼ばれるファイアウォール保護ゾーンにクライアントはあります。内部ネットワークとの接続を開くことを認可されているシステム(SUSE Managerサーバなど)はDMZ内にはありません。

このSSHメソッドは、DMZにあるクライアントに内部ネットワークのSUSE Managerサーバから暗号化トンネルを作成します。すべてのアクションおよびイベントが実行された後、トンネルはクローズします。

サーバは、SSHを使用して、定期的にクライアントに接続し、チェックインし、スケジュールされたアクションおよびイベントを実行します。

プロビジョニングモデルを使用したシステムの再インストールは、SSH Pushで管理されているクライアントでは現在サポートされていません。

トンネルを使用して、暗号化されたトンネルを介したサーバへのアクセスを提供します。SSH Pushクライアント(トンネルを使用)に割り当てられたリポジトリは、このトンネルを介してのみ提供されます。したがって、リポジトリを利用できるのはトンネルの動作中だけであるため、クライアントシステムから直接、パッケージマネージャツールを使用することはできません。つまり、セッションがサーバによって開始された場合にのみ、アクセスが可能です。クライアント上でのすべてのパッケージ管理操作はサーバ側からのみ実行できます。

SSHでのトンネル接続では、HTTPS経由のトンネル用のポート番号が必要です。デフォルトで使用されるポート番号は`1233` です。この番号を上書きするには、1024よりも大きいカスタムポート番号を/etc/rhn/rhn.confに追加します。

ssh_push_port_https = high_port

この設定パラメータを変更した後に、salt-secrets-config.servicetomcat.servicetaskomatic.serviceなどのサービスを再起動する必要があります。必要なすべてのサービスを対象とするには、rootとしてspacewalk-serviceを再起動することをお勧めします。

spacewalk-service restart

セキュリティ上の理由から、SSHでsudoを使用して、rootとしてではなく非特権ユーザとしてシステムにアクセスする必要がある場合があります。

プロシージャ: 非特権SSHアクセスの設定
  1. それぞれのクライアントシステムで、適切な非特権ユーザを作成します。

  2. 各クライアントシステムで、sudoersファイルを編集します。

    sudo visudo
  3. この行をsudoersファイルの末尾に追加してsudoアクセス権をユーザに付与します。 Web UIでクライアントをブートストラップしているユーザの名前で<user>を置き換えます。

    <user>  ALL=NOPASSWD: /usr/bin/python3, /var/tmp/venv-salt-minion/bin/python

    このプロシージャによりrootアクセス権が付与されます。クライアントの登録に必要なパスワードは不要です。 クライアントは正常にインストールされると、root特権で実行されるため、アクセス権は不要です。 クライアントを正しくインストールした後、sudoersファイルからこの行を削除することをお勧めします。

  4. SUSE Managerサーバの/etc/rhn/rhn.conf設定ファイルで、次の行を追加または修正して、非特権ユーザ名を含めます。

    ssh_push_sudo_user = <user>

この設定パラメータを変更した後に、salt-secrets-config.servicetomcat.servicetaskomatic.serviceなどのサービスを再起動する必要があります。必要なすべてのサービスを対象とするには、rootとしてspacewalk-serviceを再起動することをお勧めします。

spacewalk-service restart

Web UIまたはAPIを使用して、これらのクライアントをSUSE Managerサーバに登録する必要があります。

始める前に、SSHトンネルに使用するポートを指定済みであることを確認する必要があります。ポート番号を変更する前にクライアントを登録した場合、再アクティベーションキーを使用して再登録する必要があります。

例: SSH Push (トンネルを使用)へのAPIアクセス

APIを使用して、使用する接続メソッドを管理できます。このPythonコードの例では、接続メソッドがssh-push-tunnelに設定されます。

有効な値は次のとおりです。

  • default (pull)

  • ssh-push

  • ssh-push-tunnel

client = xmlrpclib.Server(SUMA_HOST + "/rpc/api", verbose=0)
key = client.auth.login(SUMA_LOGIN, SUMA_PASSWORD)
client.system.setDetails(key, 1000012345, {'contact_method' : 'ssh-push-tunnel'})