1.この記事の目的は何ですか?
WindowsプラットフォームでGit機能を取得したいという願望は、さまざまな構成スキームをいじりたいという願望を具体化しました。
2.意識
Cygwin、SSH、GitExtenstions、Git、Gitoliteのプログラムを使用する必要があることを認識する必要があります。
Cygwinは、Linux環境をエミュレートするプログラムで、Linuxターミナルウィンドウのように見えて動作する独自の黒いウィンドウがあります。
MsysGitはgit環境をエミュレートするプログラムですが、sshサーバーがないため、サーバー上のリポジトリを使用しません。 リポジトリのクライアントにのみ使用します。
SSHは、sshクライアントからのssh接続を使用するためのプログラムで、すべてのオペレーティングシステムで使用できます。
SSHサーバーは、sshクライアントからの接続を受け入れるプログラムです。
Gitは、ファイルリポジトリを操作するためのgit自体を含むプログラムのコレクションです。
Gitoliteはgitをラップし、リポジトリ管理機能を実装するプログラムです。ユーザー、ユーザーのアクセスなどを管理します。
GitExtensionsは、gitとGUIに含まれるプログラムセットの両方の機能をラップするWindows用のプログラムであり、05/08/10にVisual Studio開発環境にも統合されます。
企業では、SSHサービスをホストするためのリソース、リポジトリをホストするためのディスク領域を割り当てる必要があります。
SSHサーバーを提供する人、リポジトリへのアクセス。
ユーザーに関数アナログを使用して、GitExtensionsを介して古いバージョン管理システムと対話するように指導します。
Gitが達成できるワークフローを提供します。
UPD:2011年8月5日
UPD:2012年1月30日
3.結果に行きます:コンポーネントのホスティング
CygwinでGit、SSHサーバー、Gitoliteをホストします。
アドレスhttp://cygwin.com/setup.exeにアクセスします
インストーラーを実行します。
ミラーを追加http://cygwin.vc.ukrtel.net/
matway.org-利用できなくなりました。 2012年1月30日更新。
ロシアに近いミラーのリスト: cygwin.com/mirrors.html
次のコンポーネントをマークします。
ネット| openssh
デベル| git
デベル| git-completion
デベル| git-gui
デベル| gitk
編集者| ヴィム
[次へ]をクリックすると、インストールが必要なパッケージを追加することを提案します。同意して[次へ]をクリックします。
[スタート]メニュー/ Cygwin / Cygwinターミナルを確認します。
Alexeiにログインして、Windowsログイン、ベースマシン名を入力します。 それはすべて一緒に収まります。
4.結果に進みます:SSHサーバーの構成
Cygwinターミナルを起動します。
ssh-host-configコマンドでSSHサーバーの構成を開始します。
/ etc / sshd-configに移動し、パスワードなしで認証を有効にします。
これらの行のコメントを解除します。
PubkeyAuthenticationはい
AuthorizedKeysFile .ssh / authorized_keys
Gitを使用するすべてのユーザーについて、パスワードなしでユーザーgit(または別の名前)TVモードを使用して、SSHサーバーへのログインを構成する必要があります。
SSHサーバーの操作に関する理論のビット。
SSHクライアントからgit @ localhost接続文字列を介して接続する場合、最初に起こることは
.sshディレクトリでキーの秘密部分を検索します。CYGWINの場合は〜/ .ssh /、Windowsの場合-c:/ users / your name / .ssh
次に、localhostサーバーのgitプロファイルのauthorized_keysファイルで、現在のユーザー名に等しいマーカーを持つテキストが検索されます。 見つかった場合は、gitユーザープロファイルがロードされるターミナルを取得します。
クライアントはcygwinにあり、gitbashにあり、パテなどがあります。 cygwinにあるsshクライアントに興味があります。
これは、引数git @ localhostを使用してsshコマンドによって呼び出されます。ここで、gitは、sshおよびlocalhostを介してアクセスするプロファイルを持つユーザーの名前です(これはSSHサーバーのアドレスです)。
実際、上記のように動作するようにします。
- gitという名前でもう1人のユーザーを紹介します。 この名前は公式の操作用です。
コンピューター管理->ローカルユーザーとグループ->ユーザー-> pcm->新規ユーザー->を開きます。
Git名、パスワード123456、「パスワードは無期限」というチェックマークを残します-> OK
Cygwin Bashシェルを開き、コマンドmkpasswd -l -u git >> / etc / passwdを入力します
次のコマンドでユーザープロファイルを復活させます。
Ctrl + Dまたはexitコマンドを押して、プロファイルを終了します。
- ログイン用のキーを生成します。 私の場合、ログイン用のAlexeiです。
ssh-keygen -t rsaコマンドは、2つのファイルで構成されるフォルダーにキーを作成します
id_rsa(プライベート部分、ユーザーと共に保存)およびid_rsa.pub(キーの公開部分)。
次に、鍵の公開部分をgitユーザープロファイルのauthorized_keysファイルに追加します
ssh-copy-id -i git @ localhostコマンド経由。
SSHサーバーコマンドを開始します。
キーの公開部分をgitプロファイルにコピーします。
必要に応じて構成することが判明したかどうかを確認します。 ssh git @ localhostコマンドを実行し、ターミナルへの招待を待ちます
gitユーザーから。
すべてがセットアップされたことが判明しました。
うまくいかない場合は、手順10に進みます。
5.結果に移動:Gitoliteのセットアップ
- 次に、gitoliteをインストールする必要があります。また、ファイルを保存するためのリポジトリをインストールおよび構成します。 / tmpに移動し、gitを使用してgitoliteプログラムをダウンロードします。
次に、/ gitolite / src /に移動し、次のキーを使用して./gl-easy-installを実行します
git localhost Alexei。 gitは、gitoliteがインストールされるログイン、SSHサーバーのローカルホストアドレス、キーの秘密部分と公開部分の名前と同時にAlexeiのユーザー名です。
パスワードはどこにも必要ないため、パスワードの入力を求められたら、Enterキーを押します。
- 次に、次のインストール画面に進みます
このウィンドウには、vimエディターで開いている.gitolite.rcファイルが表示されます。
テキストの挿入場所にカーソルを移動し、 Iを押してテキストを入力する必要があります
$ ENV {PATH} = "/ usr / local / bin:/ usr / bin:/ bin";
テキストはエラーなしで入力する必要があります。そうしないと、このエディターで混乱します。
簡単にするために、テキストをコピーしてから、カーソルを目的の場所に移動し、Iを押してからクリックします
黒いウィンドウアイコン(端末、コマンドラインなど)で[編集]-> [貼り付け]を選択すると、行が挿入されます。
ESCを入力した後、Shift +:を押し、wqと入力してEnterを押します。
この行により、gitoliteはWindowsプログラムに類似した名前を持つcygwin環境からプログラムを呼び出すことができます。 たとえば、findコマンドはあちこちにあります。 また、指定しない場合、gitoliteはエラーを処理します。Windowsからの検索が使用されるため、インストーラーもエラーを処理します。
Enterキーをさらに数回押すと、次の図が表示されます。
6.結果に移動:GitExtensionsのセットアップ
- 次に、 http: //code.google.com/p/gitextensions/からGitExtensionsのインストールに進みます。
msysgitでインストールすると、設定後にgitextensionsが使用します。
また、opensshがパテを支持することに注意してください。
GitExtensionsのユーザーとメールの設定は考慮しません。
すべてがスムーズに進みます。
7.結果に移動:ユーザー設定
次に、現在のユーザーのWindowsプロファイルを構成する必要があります。
- Alexeiファイルが現在のプロファイルの.sshフォルダーにあることを確認しますc:/users/Alexei/.ssh/
- 構成ファイルが同じフォルダーにあることを確認してください。
- これを行うには、c:\ cygwin \ home \ yourname \ .ssh \ config and yournameからそれらを取得する必要があります
そしてc:\ users \ your name \ .ssh \にコピーします - これは、作業の一部がすでに行われている場合(この場合はgitoliteプログラム)のオプションです。
最初に、彼女はあなたのためにあなたの名前とあなたの.pubキーファイルを生成しました。 pubプロファイルをgitプロファイルのauthrozied_keysファイルに送信しました。
そして、authorized_keysのこのキーに設定を追加しました。
この変更されたauthorized_keysを見てみましょう
- 情報の説明。
キーの秘密部分は、最後にマークされたブロックに配置されます:どのユーザーおよびどのアドレスから。
最初のプライベートは、最初のキーid_rsa.pubからのものです。
2番目のプライベートはキーAlexei.pubからのものです。 ご覧のとおり、gitoliteは高度な情報をキーに追加し、すべてのシステムの相互作用を保証します。
- 新しいユーザーを設定するには、msysgitとopensshを有効にしたgitextensionsを簡単にインストールする必要があります。
次に、localhostでgitプロファイルを入力するキーを使用してユーザーを構成する必要があります。
これを行うには、スタートメニュー-> git-> git bashを開いてssh-keygen -t rsaと入力すると、2つのキーファイルが取得されます。
gitを提供する人にpubファイルを渡します。
8.結果に行きます:管理リポジトリの作業のアルゴリズム
- この人はpubファイルを取得し、ローカルリポジトリフォルダーgitolite-admin \ keydirに配置する必要があります。
このフォルダーは、インストールが開始されたユーザープロファイルに既に作成されています。
ファイル名をgitolite.confに登録し、git pushを使用してリポジトリに送信します。
その後、gitoliteはgitolite.conf.pmファイル、authorized_keysなどのgitユーザープロファイルに設定を作成します。
ユーザーがシステムに正しくセットアップされ、その下からWindowsで作業できると想定できます。
cygwinから作業するには、/ home / user / .ssh /に関連するすべてのファイルをコピーする必要があります
9.結果を見る
- 見るためには、試してみる必要があります。
GitExtensionsを起動します。
これを構成するには、[Git]タブで次のようにします。
このフォルダーは、mSysGitをGitExtensionsと一緒にインストールする場合に表示されます(各クライアントはインストールする必要があります)。
クローンリポジトリを選択し、git @ gitolite:testing.gitの任意の宛先フォルダーに配置します。
クローンをクリックして、空のテストリポジトリを取得します。
次のようなウィンドウを取得できます。
これは、ssh接続のセキュリティ違反を意味します。
この場合、SSHサーバーはコンピューター上にあるため、この問題をすばやく解決するには、ファイルc:\ users \ Alexei \ .ssh \ known_hostsを削除し、もう一度Cloneを作成します。
次のウィンドウが表示されます。
yesを押してEnterを押します。
次のウィンドウが表示されます。
その中の情報は、チェーン全体が機能していることを意味します。
d:\ test.repフォルダーを開くと、隠された.gitフォルダーがあります。これは成功を意味します。
- アドレスがgit @ gitolite、gitoliteであり、localhostではないのはなぜですか? というのは、単語gitoliteの設定を含む設定ファイルがあるからです。 sshクライアントは、サーバーアドレスでconfigにあるものに類似した単語を示していることを確認すると、このファイルの設定を適用します。 原則として、configを使用することはできず、秘密鍵はデフォルトでid_rsaおよびlocalhostサーバーアドレス(またはIPアドレス)と呼ばれ、git @ localhostのようになります。 しかし、これはできません。 Gitoliteは誰が誰であるかを理解しないので。 したがって、id_rsaの代わりに、全員がプライベート部分を持つファイルを持ち、その名前は他のすべてとは異なります。
ファイルを見てみましょう。
10.エラーを確認します
- SSHおよびパスワードログイン
これはすべて、authorized_keysが壊れているためです。
または、sshサーバー設定。authorized_keysファイルの使用を含みます。
gitユーザーの構成段階にいる場合、ssh-copy idを使用します。これは、pubバージョンのキーをコピーし、authorized_keysを編集します。 エコシステム全体を既にインストールしている場合:
/home/git/.gitolite/src/gl-setup-authkeys -batch /home/git/.gitolite/keydir - git @ gitoliteのようなアドレスは受け入れられません:testing.git
/home/git/.gitolite/src/gl-setup-authkeys -batch /home/git/.gitolite/keydir
これはすべて、authorized_keysが壊れているためです。 このコマンドを再度使用して生成します。 - cygwin bashシェルからパスワードなしで常にログインする
/home/git/.gitolite/src/gl-setup-authkeys -batch /home/git/.gitolite/keydir
すべて、authorized_keysが壊れているため、このコマンドで再度生成します。
また、gitolite.rcにエントリをインストールしていない場合もあります。
$ENV{PATH}="/usr/local/bin:/usr/bin:/bin";
あなたの手段でそれを置きます。 - WindowsとCygwinの間でユーザーを同期する
mkpasswd -l> / etc / passwd
sshサーバーのログインとgitoliteシステムのサービスログインを再割り当てする場合に必要です。 - SSHサーバーを削除
cygrunsrv -R sshd
これはWindowsからcygserver sshサービスのみを削除しますが、ログインは残ります。
これを行うには、ファイルから/ etc / ssh *を削除する必要があります。
Windowsからcygserverログインを削除し、/ etc / passwdをコマンドと同期します
mkpasswd -l >/etc/passwd
大きな夢のような小さなメモ
- mkpasswdコマンドは、ログイン作業ディレクトリのパスを/ etc / passwdファイルに書き込みます。
デフォルトのフォルダーcygwin \ homeが収まらない場合は、gitユーザーを作成するときに-p "$(cygpath -H)"キーを使用して、Windows7などのc:\ users \フォルダーを指定できます。
mkpasswd -l -p "$(cygpath -H)" > /etc/passwd
- また、この記事では、sshサーバーとユーザーが同じコンピューター上にある場合にインストールスキームを使用しましたが、これは別の厄介な問題につながります。 デフォルトでは、Cygwinのログインはフォルダーcygwin \ home \%username%を検索し、記事ではmsysgitでバイパスされます。ログインではフォルダーc:\ users \%username%(win7の場合)を検索するため、 cygwin \ home \%username%からc:\ users \%username%へのキー(セクション7.3)。 c:\ users \%username%でログインするためにホームフォルダーをCygwinに転送すると、msysgitの必要性はなくなります。
にゃんさ完成しました。