Windows10でGitサーバーを構築し、SSHで繋ぐ
はじめに
現在参画中のプロジェクトで今までsvnでソース管理を行っていたのですが、
今回Gitに変えようという話になり、Hyper-V上の仮想環境にGitサーバーを構築することに
なったのが、事の始まりです。
その過程でかなり苦労したため、同じようなことで困っている方の助けになれたら、
というのと自分自身の備忘録として、ここに残しておきます。
もっと簡単な設定方法や、間違いがあるかもしれませんが、ご了承ください。
実行環境
環境 | Gitサーバー | Gitクライアント |
---|---|---|
OS | Hyper-V上のWindows10 | Hyper-V上のWindows10 |
IPアドレス | 192.133.28.100 | 192.133.28.108 |
ユーザー名 | ServerTest | ClientTest |
サーバー・クライアント共通設定
-
Gitのインストール
下に挙げている参考サイトなど、様々なサイトで紹介されているため、割愛します。 -
Gitのグローバル設定
GitBashを管理者として実行し、以下のコマンドを実行する。
# ユーザ設定 任意のemailアドレスとユーザー名
git config --global user.email "hoge@hoge.co.jp"
git config --global user.name "hogehoge"
# 日本語名表示設定
git config --global core.quotepath false
クライアントのみの設定
- SSHキーの作成
GitBashを管理者として実行し、以下のコマンドを実行する。
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
秘密鍵と公開鍵(id_rsaとid_ras.pub)ファイルが
C://ユーザー/自分のユーザ/.sshフォルダにできていることを確認する。
-
サービスからOpenSSH Authentication Agentを自動起動にし、開始する
-
configファイルを作成する
以下の内容でC://ユーザー/自分のユーザ/.sshフォルダに作成する
# 任意の接続名
host Server
# サーバーのユーザー名
user ServerTest
# サーバーのIPアドレス
hostname 192.133.28.100
# サーバーのSSH接続のポート番号(デフォルトは22)
port 22
# 秘密鍵のパス
identityfile ~/.ssh/id_rsa
サーバーのみの設定
- リポジトリの作成
- C://Program Files/Git/ 以下にベアリポジトリフォルダとノンベアリポジトリフォルダの作成を行う
今回はノンベアリポジトリをsource、ベアリポジトリをsource.gitというファイル名で作成しました。
それぞれの違いについてはこちらを参考にしました↓
-
ノンベアリポジトリに対象のソースファイルを置き、GitBashで以下のコマンドを実行する
-
リポジトリの初期化
フォルダ内に.gitフォルダが作成されています。
-
ファイルの追加
今回はtest.txtとtest2.txtの2ファイルを追加しました
-
コミット
-
ノンベアリポジトリからベアリポジトリにgit cloneして、更新管理用フォルダを作成する
source.gitフォルダの中にsourceフォルダの.gitフォルダの中身がcloneされている。
- SSHサーバ立ち上げ
- OpenSSHサーバーをインストール
アプリと機能のオプション機能から機能の追加を選択し、OpenSSHサーバーをインストールする
コンピューターの管理のサービスからOpenSSHサーバーを自動開始に変更し、開始する
C://ProgramData/sshにキーが作成されている
- sshd_configの編集
コマンドプロンプトを管理者として実行し、メモ帳でC://ProgramData/sshd_configを編集する
以下の項目のコメント(#)を外し、該当項目の設定を変更する
Port 22
SyslogFacility LOCAL0
LogLevel DEBUG
Public Authentication yes
PasswordAuthentication no
PermitUserEnvironment yes
Match Group administrators
AuthorizedKeyFile .ssh/authorized_keys
-
環境変数に以下のパスを追加する
C://Program Files/Git/usr/bin(bash.exeの場所)
C:\Program Files\Git\mingw64\bin(git-upload-packの場所) -
OpenSSHサーバーを再起動する
コンピューターの管理のサービスからOpenSSHサーバーを再起動する -
クライアントの公開鍵をサーバーに登録する
C:/ユーザー/ユーザ名/.sshフォルダの直下にauthorized_keysというファイルを作成し、
クライアントで作成したid_rsa.pubの中身を書き込む
- windowsのsshログインシェルをGitbashに変更する
参考にしたサイト↓ このサイトが無ければ詰んでました、、
- Powershellを管理者権限で実行し、以下のコマンドを実行する
Get-Command bash | Format-Table -AutoSize -Wrap
- 結果で得られたSource欄のパスを入力した以下のコマンドを実行する
New-ItemProperty -Path "HKLM:\SOFTWARE\OpenSSH" -Name DefaultShell -Value "↑で得られたパス" -PropertyType String -Force
以下のような表示が出れば成功
クライアントからの接続
1.SourceTreeを起動し、Cloneタブの一番上に下記アドレス、保存先のパスに任意の保存先を入力し、クローンボタンを押すことで、クライアントの任意のフォルダにcloneされる。
ssh://Server(configファイルに設定した接続名)/
source.git(サーバーで作成したベアリポジトリ名)
サーバーでコミットしたtest.txtとtest2.txtファイルがcloneされている
参考
- Windows10パソコン上にGitサーバを立ててみた - LinuxサーバがないけどGitサーバを運用したい場合の対処法
https://imamachi-n.hatenablog.com/entry/2018/06/09/170331 - Windows10のOpenSSHでconfig使ってSSH接続
https://meshikui.com/2018/09/11/949/ - Windows上にGitサーバを構築する|SSH編
https://moewe-net.com/git/git-server-ssh - WindowsにGitサーバを構築してSSHでアクセスする
https://www.tdi.co.jp/miso/windows-server-git-ssh#clone - Windows10公式のopensshサーバーを起動して、macからsshで接続するまで
https://qiita.com/hatobeam75/items/825ee10a5261835e814b - SSHできないときのトラブルシューティング
https://qiita.com/ryuichi1208/items/4151110327584c971f11 - SSH で正しく公開鍵認証設定しているのに接続先パスワードを聞かれるときの対処
https://soji256.hatenablog.jp/entry/2021/03/04/070000
Discussion