Window系统上通过SSH搭建git服务器
1. OpenSSH安装(如果已安装,请忽略)
-
打开“设置”,选择“系统”,然后选择“可选功能”。
-
扫描列表,查看是否已安装 OpenSSH。 如果未安装,请在页面顶部选择“添加功能”,然后:
-
找到“OpenSSH 客户端”,然后选择“安装”
-
找到“OpenSSH Server”,然后选择“安装”
-
打开“服务”桌面应用。 (选择“开始”,在搜索框中键入 services.msc ,然后选择“服务”应用或按 ENTER。)
-
在详细信息窗格中,双击“OpenSSH SSH 服务器”。
在“常规”选项卡上的“启动类型”下拉菜单中,选择“自动”,然后选择“确定”。
- 若要启动服务,请选择“启动”。
2. 安装git
- https://git-scm.com/download/win 下载一路next安装。
3. SSH配置
- ssh-keygen -t rsa 生成密钥和公钥
- C:/Users/用户名/.ssh/ 下新增config文件,配置如下
# 这是一个注释Host alianame HostName ipUser usernameIdentityFile C:/Users/用户名/.ssh/id_rsa
Host 是主机别名,后续通过ssh克隆就可以使用别名,不必写ip地址
HostName ip地址
User 服务器用户名
IdentityFile 密钥校验文件路径,也可以是你自己的其他文件
-
C:/Users/用户名/.ssh/ 下新增authorized_keys文件,用于后续添加用户的pubkey验证。 只需要将用户生成的C:/Users/用户名/.ssh/id_rsa.pub 的内容追加到authorized_keys文件即可
-
sshd_config配置
sshd_config路径在C:/ProgramData/ssh/sshd_config,这里面有三个关键配置项需要设置:
PubkeyAuthentication yes
PasswordAuthentication no
AuthorizedKeysFile C:/Users/用户名/.ssh/authorized_keys
PubkeyAuthentication yes:开启pubkey验证
PasswordAuthentication no:关闭密码验证,即可通过pubkey免密登录
AuthorizedKeysFile C:/Users/用户名/.ssh/authorized_keys : pubkey验证的文件路径
配置完成后重启ssh服务。服务-Open SSh Serve -重新启动
4. 通过以上配置就可以初始化仓库
- 找一个磁盘空间专门用户git库存放。如我在D:/git-repo/
cd D:/git-repo/git init --bare git-demo.git
git init --bare git-demo.git 初始化一个空的仓库
- 客户端克隆 (此时要保证客户端用户的id_rsa.pub已经添加到authorized_keys 中)
git clone username@alianame:D:/git-repo/git-demo.git
username 对应服务器用户名,也可以为git专门创建用户名。alianame是.ssh中配置的服务器别名,也可以是ip地址。
有可能会如下错误:
'git-upload-pack' *****fatal: Could not read from remote repository.Please make sure you have the correct access rights
and the repository exists.
默认OpenSSH使用的shell是powershell.exe,将其改为git for windows的bash.exe即可解决这个问题。
# 注意bash.exe的路径使用你自己的 ,在powershell中执行
New-ItemProperty -Path "HKLM:\SOFTWARE\OpenSSH" -Name DefaultShell -Value "C:\xxxxx\software\git\Git\bin\bash.exe" -PropertyType String -Force