Bitvise 配置SSH服务器以实现Git访问

配置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:

gs-git-createfolder-t

检查Windows权限

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

gs-git-checkfolderperms-t

Windows 账户 BvSsh_VirtualUsers 是用户组成员,但该组没有 Windows 文件系统权限写入 C:\GitRepos。我们需要添加权限以允许此操作。

配置Windows权限

我们仍然使用 Windows 文件资源管理器,使用高级安全设置将 C:\GitRepos 内容授予 Windows 文件系统权限给 BvSsh_VirtualUsers 账户:

gs-git-addfolderperms-t

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

gs-git-addfolderperms2-t

这将使虚拟账户能够完全控制存储在 C:\GitReps 下的文件和子文件夹;但不会直接覆盖根目录本身。

创建一个虚拟账户

我们现在可以添加一个SSH服务器虚拟账户,用于访问Git:

gs-git-addaccount-t

注意我们已经禁用了文件传输,但仍配置了一个不存在的SFTP根目录。这可能有助于防止有人误开了允许文件传输选项。

虚拟账户默认已经禁用端口转发功能。

首次连接:主机密钥验证

在尝试连接之前,先检查SSH服务器控制面板,确保SSH服务器正在运行。如果不是,就开始吧。

如果SSH服务器已启动,我们将使用OpenSSH连接:

  • 使用我们创建的GitUser账户。
  • 针对127.0.0.1——IPv4“本地主机”接口。
  • 连接到我们在SSH服务器中配置的端口号。如果服务器在默认SSH端口接受连接,我们会省略参数“-p 47506”。

最终的命令行如下:

SSH GitUser@127.0.0.1 -p 47506

gs-git-hostkey-t

OpenSSH 提醒我们,连接必须验证 SSH 服务器的主机密钥才能被信任。

验证主机密钥对SSH会话的安全至关重要。如果主机密钥未被验证,任何有能力劫持网络流量的人都能拦截SSH会话。这可能是ISP,或者使用无线连接时附近的任何人。

要验证主机密钥,请将截图中高亮的SHA-256指纹与SSH服务器控制面板中的指纹进行比较:

gs-git-hostkeyserver-t

验证指纹时:

  • 整个指纹必须匹配。
  • 如果你只检查开头或结尾,很容易伪造出只匹配这些数字的指纹。
  • 如果客户端和服务器都提供SHA-256版本的指纹,建议优先使用。
  • 如果SHA-256无法使用,请查看Bubble-Babble。
  • MD5是指纹中最弱的版本,除非没有其他形式,否则不应依赖。

首次连接:认证

如果我们已批准信任SSH服务器的主机密钥,OpenSSH接下来会要求用户输入密码:

gs-git-sshpwauth-t

如果我们正确输入密码,SSH会话将失败,表现为:

Shell请求在频道0失败

这是预期中的,也表明配置安全。该账户仅用于Git访问,不提供终端壳。

创建一个仓库

现在让我们创建一个空的Git仓库。进入C:\GitRepos,运行:

git init –bare testrepo

gs-git-initrepo-t

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

gs-git-checkrepoperms-t

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

gs-git-resetperms-t

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

gs-git-repopermsafterreset-t

好多了。

克隆仓库

我们现在可以通过SSH克隆仓库。为了在同一台电脑上测试,我们运行:

Git 克隆 ssh://GitUser@127.0.0.1:47506/testrepo

gs-git-clone-t

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

gs-git-push-t

使用 Cygwin Git

用 Windows 版 Git 通常更简单。如果你更喜欢使用Cygwin,以下章节是针对Cygwin的专用。

下载Cygwin设置

安装Cygwin时,我们导航到 Cygwin.com。我们用的是64位系统,所以下载了64位安装程序:

gs-git-cygwindlpage-t

目前,我们将在安装SSH服务器的同一台电脑上安装Cygwin。你也可以在一台或多台客户端电脑上安装Cygwin Git和OpenSSH。

运行Cygwin设置

要安装Cygwin,你需要管理员权限。遗憾的是,截至本文撰写时,安装程序尚未进行数字签名:

gs-git-cygwinsetuprun

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

gs-git-cygwininstfromnet-t

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

gs-git-cygwinsetuprootdir-t

gs-git-cygwinsetuppkgdir-t

选择Cygwin下载网站

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

gs-git-cygwinmirrors-t

遗憾的是,截至撰写本文时,尚无安全的下载地点可用。我们希望这一状况能够得到改善。

精选Cygwin套餐

我们进入Cygwin套餐选择阶段。不要选择所有软件包:如果选择,安装时间会非常长,下载量也会非常大。

我们会默认保留包含的包,并添加 Git 和 OpenSSH:

gs-git-cygwinsetupgit-t

gs-git-cygwinsetupopenssh-t

安装时包版本可能会不同。只需选择最新版本中的一个即可。

接受依赖关系

添加 git 和 openssh 包后,点击“下一步”。我们被要求选择额外的依赖关系:

gs-git-cygwinsetupdeps-t

建议选择它们,否则可能无法正常工作。

完整的Cygwin安装

再次点击“下一步”后,Cygwin 开始下载和安装。在普通电脑和网络连接下,这可能需要几分钟。装置的结尾如下:

gs-git-cygwinsetupdone-t

将Cygwin添加到PATH

安装 Cygwin 后,还有一个重要任务:将 Cygwin 二进制文件目录添加到 Windows 的 PATH 环境变量中。Cygwin自己不会这样做。

在解决这个问题之前,我们无法从Windows命令提示符执行Git,但可以在C:\cygwin64\bin中找到该可执行文件:

gs-git-cygwinnopath-t

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

gs-git-envvarsearch-t

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

gs-git-envvarsysprops

在系统变量中,找到路径,并添加:

;c:\cygwin64\bin

gs-git-envvaraddcygwinpath-t

如果你选择了不同的 Cygwin 根目录,添加路径会不同。确保这条路是git.exe和ssh.exe居住的地方。

确认PATH更改后,打开一个新的命令提示符窗口。(任何之前的窗口仍会使用旧的PATH。)验证我们是否可以在没有路径资格的情况下运行git和ssh:

gs-git-cygwininpath-t

首次连接:Cygwin 主目录

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

gs-git-bashhomedir-t

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

赞 (0)
配置SSH服务器以实现SFTP和SCP访问
上一篇 2分钟前
打开Bitvise SSH服务器以从互联网访问
下一篇 34秒前

相关推荐