Mercurial ServerのインストールとSSH認証の使用

数日前、彼らは私にローカルマシンの1つで水銀リポジトリを作成するタスクを設定し、1つの条件-必須のSSH認証を設定しました。 64ビットサーバーUbuntでMercurial Serverを使用してインストールが実行されます。



Mercurial Serverをインストールする



最初に思いついたのは、リポジトリからのインストールです。 パッケージを更新してコマンドを実行した後:

apt-get install -y mercurial-server
      
      





最新ではないバージョン1.0.1-1がインストールされていることがわかりました。

バージョン1.2-1のdebパッケージが公式Webサイトで発見されました。これはチームによってインストールされました

 dpkg -i mercurial-server_1.2-1_all.deb
      
      







キー認証用にSSHを構成する



なぜなら ssh経由でサーバーにアクセスするユーザーのすべてのキーを1か所に保存して、 / etc / ssh / sshd_configファイルに次の行を追加したかったのです。

AuthorizedKeysFile /etc/ssh/keys/%u.pub





これは、キーファイルが/ etc / ssh / keys /フォルダーに保存され、 username.pubのように見えることを意味します



Mercurialサーバーを構成する



Mercurial Serverの構成ホームディレクトリは、 / var / lib / mercurial-serverにあります.mercurial-serverファイルに興味があります。メインサーバーの設定が保存されるのはこのファイルです。 そこで、リポジトリへのパス、公開鍵を持つディレクトリなどを変更できます。 リポジトリが別のドライブに移動されたため、それに応じてリポジトリ変数を変更しました。

ユーザーは、 root (作成を含むすべてのリポジトリに対する完全な権限を持っている)とユーザー (プルおよびプッシュする権利を持っている)の2つのグループに分かれています。

サーバーにアクセスする必要があるユーザーのキーは/ etc / mercurial-server / keys / usersフォルダーに配置し、管理者のキーは/ etc / mercurial-server / keys / rootにする必要があります。



Hgadminの特別なリポジトリ


サーバーをインストールすると、hgadminサービスリポジトリが自動的に作成され、ユーザーと管理者のキーを保存できます。 これは非常に便利です ユーザーキーを手動で読み込む必要はありません。

構造はシステムの構造とまったく同じです。 キーは、ユーザーと管理者のそれぞれ/ hgadmin / keys / users/ hgadmin / keys / rootに保存されます。

そこで、ユーザーのアクセス権を管理するaccess.confファイルを保存できます。



最終セットアップ



デフォルトでは、hgユーザーにアクセスするためのキーは〜/ .ssh / authorized_keysに保存されているため、 / etc / ssh / keys /ディレクトリにシンボリックリンクを作成する必要があります。 これを行うには、次のコマンドを実行します。

  ln -s /var/lib/mercurial-server/.ssh/authorized_keys /etc/ssh/keys/hg.pub
      
      







/ etc / mercurial-server / keysにキーを配置した後、アクセス権を更新する必要があります。これを行うには、次のコマンドを実行します。

 sudo -u hg /usr/share/mercurial-server/refresh-auth
      
      





hgadminを使用してキーが追加された場合、変更は自動的に有効になります。



TortoiseHgを使用してリポジトリにアクセスする



まず、Pageantをダウンロードする必要があります。必要に応じてTortoiseHg秘密鍵を転送します。 便宜上、システムの起動時に実行されるbat'nikを作成しました。 その意味は、Pageantに秘密鍵を追加することです。

start pageant.exe node.ppk







ページェントを開始した後、残っているのはリポジトリを複製することだけです。

次のコマンドを使用して、特別なhgadminリポジトリを複製します。

hg clone ssh://hg@server/hgadmin







次のコマンドを使用して、新しいリポジトリを作成できます。

hg init ssh://hg@server/myrep







便利なリンク




All Articles