配置SSH服务器以实现Git访问
入门的这一部分假设:
- 你最近安装了Bitvise SSH服务器。
- 你已经了解过SSH服务器在Windows账户和虚拟账户中的应用。
- 你想配置SSH服务器以提供访问Git仓库的权限。
Git 的版本
在配置SSH服务器以提供访问Git之前,我们必须先安装Git。
Windows版Git可以从多个来源下载。SSH服务器识别两种主要类型:
- 类似于msysGit的Git版本,包括Windows版的Git。
- 比如Cygwin的Git版本。
用 Windows 版 Git 更简单。如果你更喜欢Cygwin,请参见后面专门针对Cygwin的章节。
在入门的这一部分,我们使用 OpenSSH 作为客户端。
你也可以使用sexec,它包含在Bitvise SSH客户端中。在这种情况下,在 Git 客户端上配置 Git 设置 core.sshcommand:
core.sshcommand=sexec -git -profile=…
或者,例如:
core.sshcommand=sexec -git -user=… -keypairFile=…
core.sshcommand=sexec -git -user=… -pw=…
为 Git 仓库创建根目录
建议指定一个目录(除了C:\)来包含Git仓库。我们将使用 Windows 文件资源管理器创建目录 C:\GitRepos:

检查Windows权限
我们将使用带有默认安全上下文的虚拟账户。因此,我们需要确保Windows账户BvSsh_VirtualUsers能够访问我们Git仓库目录中的文件和子目录:

Windows 账户 BvSsh_VirtualUsers 是用户组成员,但该组没有 Windows 文件系统权限写入 C:\GitRepos。我们需要添加权限以允许此操作。
配置Windows权限
我们仍然使用 Windows 文件资源管理器,使用高级安全设置将 C:\GitRepos 内容授予 Windows 文件系统权限给 BvSsh_VirtualUsers 账户:

我们已经确定了想要添加权限的账户。我们配置它们如下:

这将使虚拟账户能够完全控制存储在 C:\GitReps 下的文件和子文件夹;但不会直接覆盖根目录本身。
创建一个虚拟账户
我们现在可以添加一个SSH服务器虚拟账户,用于访问Git:

注意我们已经禁用了文件传输,但仍配置了一个不存在的SFTP根目录。这可能有助于防止有人误开了允许文件传输选项。
虚拟账户默认已经禁用端口转发功能。
首次连接:主机密钥验证
在尝试连接之前,先检查SSH服务器控制面板,确保SSH服务器正在运行。如果不是,就开始吧。
如果SSH服务器已启动,我们将使用OpenSSH连接:
- 使用我们创建的GitUser账户。
- 针对127.0.0.1——IPv4“本地主机”接口。
- 连接到我们在SSH服务器中配置的端口号。如果服务器在默认SSH端口接受连接,我们会省略参数“-p 47506”。
最终的命令行如下:
SSH GitUser@127.0.0.1 -p 47506

OpenSSH 提醒我们,连接必须验证 SSH 服务器的主机密钥才能被信任。
验证主机密钥对SSH会话的安全至关重要。如果主机密钥未被验证,任何有能力劫持网络流量的人都能拦截SSH会话。这可能是ISP,或者使用无线连接时附近的任何人。
要验证主机密钥,请将截图中高亮的SHA-256指纹与SSH服务器控制面板中的指纹进行比较:

验证指纹时:
- 整个指纹必须匹配。
- 如果你只检查开头或结尾,很容易伪造出只匹配这些数字的指纹。
- 如果客户端和服务器都提供SHA-256版本的指纹,建议优先使用。
- 如果SHA-256无法使用,请查看Bubble-Babble。
- MD5是指纹中最弱的版本,除非没有其他形式,否则不应依赖。
首次连接:认证
如果我们已批准信任SSH服务器的主机密钥,OpenSSH接下来会要求用户输入密码:

如果我们正确输入密码,SSH会话将失败,表现为:
Shell请求在频道0失败
这是预期中的,也表明配置安全。该账户仅用于Git访问,不提供终端壳。
创建一个仓库
现在让我们创建一个空的Git仓库。进入C:\GitRepos,运行:
git init –bare testrepo

我们已经创建了仓库。但在使用之前——先运行Windows文件资源管理器。检查权限是否正确:

真是让人惊讶。我们只需从根节点 C:\GitRepos 重设权限:

现在让我们重新检查testrepo上的权限:

好多了。
克隆仓库
我们现在可以通过SSH克隆仓库。为了在同一台电脑上测试,我们运行:
Git 克隆 ssh://GitUser@127.0.0.1:47506/testrepo

我们可以添加首次提交,并推送:

使用 Cygwin Git
用 Windows 版 Git 通常更简单。如果你更喜欢使用Cygwin,以下章节是针对Cygwin的专用。
下载Cygwin设置
安装Cygwin时,我们导航到 Cygwin.com。我们用的是64位系统,所以下载了64位安装程序:

目前,我们将在安装SSH服务器的同一台电脑上安装Cygwin。你也可以在一台或多台客户端电脑上安装Cygwin Git和OpenSSH。
运行Cygwin设置
要安装Cygwin,你需要管理员权限。遗憾的是,截至本文撰写时,安装程序尚未进行数字签名:

我们还没有下载Cygwin文件,所以选择了从互联网安装:

我们选择了 Cygwin 根目录和本地包目录的默认选项:


选择Cygwin下载网站
选择连接类型后,我们必须选择下载位置:

遗憾的是,截至撰写本文时,尚无安全的下载地点可用。我们希望这一状况能够得到改善。
精选Cygwin套餐
我们进入Cygwin套餐选择阶段。不要选择所有软件包:如果选择,安装时间会非常长,下载量也会非常大。
我们会默认保留包含的包,并添加 Git 和 OpenSSH:


安装时包版本可能会不同。只需选择最新版本中的一个即可。
接受依赖关系
添加 git 和 openssh 包后,点击“下一步”。我们被要求选择额外的依赖关系:

建议选择它们,否则可能无法正常工作。
完整的Cygwin安装
再次点击“下一步”后,Cygwin 开始下载和安装。在普通电脑和网络连接下,这可能需要几分钟。装置的结尾如下:

将Cygwin添加到PATH
安装 Cygwin 后,还有一个重要任务:将 Cygwin 二进制文件目录添加到 Windows 的 PATH 环境变量中。Cygwin自己不会这样做。
在解决这个问题之前,我们无法从Windows命令提示符执行Git,但可以在C:\cygwin64\bin中找到该可执行文件:

访问界面编辑系统环境变量的最快方法是使用Windows开始菜单搜索:

这会启动系统属性对话框,我们会打开环境变量:

在系统变量中,找到路径,并添加:
;c:\cygwin64\bin

如果你选择了不同的 Cygwin 根目录,添加路径会不同。确保这条路是git.exe和ssh.exe居住的地方。
确认PATH更改后,打开一个新的命令提示符窗口。(任何之前的窗口仍会使用旧的PATH。)验证我们是否可以在没有路径资格的情况下运行git和ssh:

首次连接:Cygwin 主目录
在尝试使用 OpenSSH 之前,先确认我们当前 Windows 账户是否有 Cygwin 的主目录。如果没有,请用“-l”选项启动 Bash 来创建:

原创文章,作者:云东方,如若转载,请注明出处:https://www.yundongfang.com/Yun1069.html