标签: git

让我们的 Windows 用户社区更容易使用 ssh

我在一个学术环境中工作,我们提供各种 ssh 可访问的计算资源。我们还提供git存储库托管,我们需要 ssh 来对存储库进行读/写访问。

我们针对 OS X 和 Linux 用户的说明相对简单,最重要的是,与 OS X 和大多数现代 Linux 发行版保持一致,OpenSSH都是开箱即用的,更重要的ssh-agent是,预配置为在任何桌面运行时运行会话处于活动状态。我们通常鼓励人们为他们的密钥分配密码,因此没有身份验证代理的生活很快就会变得烦人。

目前,我们为 Windows 用户提供的解决方案总体上更加分散且更加复杂。过去人们一直在使用PuTTY,但这需要额外的步骤来生成与 OpenSSH 兼容的密钥。这也使得使用git命令行工具变得更加困难——尽管不是,我意识到,不可能——使用命令行工具,当与 ssh 可访问的存储库交互时,它最适合与 OpenSSH 一起使用。

我们只想让人们安装msysgit,但我们正在寻找一种集成ssh-agent到 Windows 桌面环境的好方法。最常见的解决方案是通过 中的条目启动代理.bashrc,但这充其量看起来很笨拙,这意味着我们必须指导大部分非技术用户完成.bashrc在 Windows 下编辑他们的过程。

另一个复杂之处是它WinSCP通常用作文件传输工具——当然这不会与ssh-agent. 它将pagent与 PuTTY 人员交谈,但pagent不说话,ssh-agent因此无法从命令行工作。

其他人做了什么来为不同平台上的用户提供一致的环境?您是否刚刚举手并决定为 Windows 用户维护一组单独的文档?

更新

我发现有两个程序充当 OpenSSH 和 pagent 之间的垫片。你有任何的经验夏利SSH-PAGENT

windows ssh git

6
推荐指数
1
解决办法
245
查看次数

在不了解机器配置的情况下安装 git

我在 Linux 服务器上有一个用户帐户(x86_64-unknown-linux-gnu根据this)。它显然在$PATH( yum, apt-get, pkg, pkg-add, emerge, pacman) 中没有包管理器,并且它没有cc. (编辑顺便说一下,这是一个共享的主机服务器。因此,技术支持人员只是以下脚本时,我试着问他们的意见。他们也想追加销售我自己的VPS包,我并不需要或想要)

我想安装git~/bin. 我没有要这样做,但它肯定会让我的生活更轻松。但是,我在网上找到的有关安装 git 的所有说明都与以下任一内容有关:

  1. 使用包管理器(我似乎无权访问)
  2. 从源代码安装(我不能,因为我没有cc

Linux 不是我的本机操作系统,所以我对如何进行有点不知所措。我需要做什么?有没有地方可以下载预编译的二进制文件并查看它们是否有效?

linux installation git

6
推荐指数
3
解决办法
3212
查看次数

如何在 GitHub 存储库上“镜像”?

我注意到https://github.com/apache/ant说“从 git://git.apache.org/ant.git 镜像”(带有链接),我也想这样做。

https://exyr.org/2011/git-mirrors/似乎是对一般技术(基本上是一个 cron 工作)的好文章,但我遇到了一些奇怪的错误,我没有看到“镜像来自” https://github.com/pdurbin/openscholar(目的地)。我希望镜像的来源是https://github.com/openscholar/openscholar

这是我看到的(修剪后的)输出:

murphy:~ pdurbin$ cd /tmp
murphy:tmp pdurbin$ git clone --mirror https://github.com/openscholar/openscholar.git
Cloning into bare repository 'openscholar.git'...
remote: Counting objects: 167069, done.
remote: Compressing objects: 100% (51806/51806), done.
remote: Total 167069 (delta 112936), reused 166304 (delta 112255)
Receiving objects: 100% (167069/167069), 82.77 MiB | 650 KiB/s, done.
Resolving deltas: 100% (112936/112936), done.
murphy:tmp pdurbin$ cd openscholar.git
murphy:openscholar.git pdurbin$ git remote add github git@github.com:pdurbin/openscholar.git
murphy:openscholar.git pdurbin$ git fetch -q && …
Run Code Online (Sandbox Code Playgroud)

mirror git github

6
推荐指数
1
解决办法
1623
查看次数

在 debian(基于系统)上为 git-http-backend 配置 nginx

我在 Ubuntu 13.04 机器上使用 nginx 服务器无法让 git-http-backend 工作。之前在 Debian 7 上试过,但结果相似。基本上我遵循了http://weininger.net/configuration-of-nginx-for-gitweb-and-git-http-backend/但忽略了与 gitweb 相关的任何内容。

我做了以下事情:

使用以下命令安装 nginx、git、git-core 和 fcgiwrap:

apt-get install git git-core nginx fcgiwrap
Run Code Online (Sandbox Code Playgroud)

在 /var/git/test.git 上创建了一个裸仓库,并将其添加到 www-data:

mkdir -p /var/git/test.git
cd /var/git/test.git
git init --bare
git update-server-info
chown -R www-data:www-data /var/git
Run Code Online (Sandbox Code Playgroud)

将 /etc/nginx/sites-enabled/default 替换为

server {
        listen 80;

        server_name localhost;

        location / {
                root /var/git;

                fastcgi_pass unix:/var/run/fcgiwrap.socket;
                fastcgi_param SCRIPT_FILENAME   /usr/lib/git-core/git-http-backend;
                fastcgi_param PATH_INFO         $uri;
                fastcgi_param GIT_PROJECT_ROOT  /var/git;
                fastcgi_param GIT_HTTP_EXPORT_ALL "";
                include /etc/nginx/fastcgi_params;
        }
}
Run Code Online (Sandbox Code Playgroud)

做的时候

GIT_CURL_VERBOSE=1 git clone …
Run Code Online (Sandbox Code Playgroud)

http nginx git

6
推荐指数
1
解决办法
3824
查看次数

将 ssh 限制为本地网络,git 用户除外

我有一个使用 Gitlab 和 OpenVPN 设置的 Ubuntu 12.04 服务器作为我们的 git 和 vpn 服务器。

目前我已经在防火墙中打开了端口 1194 以打开 OpenVPN 并让用户通过 rsa 证书和 google auth 密钥进行身份验证。

我还没有为 SSH 流量打开防火墙,因为我不希望 SSH 完全暴露给 WAN。但是,我们需要能够在不连接到 vpn 的情况下进行推拉。

如何只为有限的 git 用户打开对 WAN 的 ssh 访问,同时允许管理员从 LAN 访问服务器?

我怀疑我应该在 sshd_config 文件中寻找使用匹配组的方向。正如在这个问题中看到的:“我如何设置 OpenSSH 每用户身份验证方法? ”,有人有这方面的经验吗?


编辑:

我最初接受了使用 access.conf 来限制登录访问的答案。但是后来的答案表明,可以通过 match 指令或使用 username@hostaddress 语法在 sshd.conf 中实现相同的目的。

起初我觉得把它放在 sshd 中更直观,而且对于其他管理员来说可能更容易维护和理解。与 sshd.conf 相比,使用 access.conf 有什么强大的优势吗?

如果我要对这里提到的选项的直观程度进行范围划分,我会说: 1. sshd.conf 2. access.conf 3. IpTables

你同意?

ssh git

6
推荐指数
2
解决办法
6120
查看次数

使用远程 powershell 执行 git 命令会导致 NativeCommmandError

执行远程 PowerShell 脚本时出现错误。在我的本地机器上,我正在运行一个 PowerShell 脚本,该脚本Invoke-Command用于cd进入远程 Amazon Windows Server 实例上的目录,然后Invoke-Command执行位于该服务器实例上的脚本。服务器上的脚本正在尝试从 GitHub git clone 存储库。我可以在服务器脚本中成功执行诸如“ls”甚至“git --version”之类的操作。但是git clone,git pull等会导致以下错误:

克隆到 'MyRepo'... + CategoryInfo : NotSpecified: (克隆到 'MyRepo'...:String) [], RemoteException +fullyQualifiedErrorId : NativeCommandError

这是我第一次使用 PowerShell 或 Windows Server。任何人都可以就这个问题提供一些指导。

客户端脚本:

$s = new-pssession -computername $server -credential $user
invoke-command -session $s -scriptblock { cd C:\Repos; ls } 
invoke-command -session $s -scriptblock { param ($repo, $branch) & '.\clone.ps1' -repository $repo -branch $branch} -ArgumentList $repository, $branch
exit-pssession
Run Code Online (Sandbox Code Playgroud)

服务器脚本: …

windows powershell git

6
推荐指数
1
解决办法
8903
查看次数

我希望 Jenkins 在 Gerrit 中上传或更改补丁集时触发构建。我该如何配置?

我正在使用 Jenkins 1.557 来观察 Gerrit 2.8 实例的变化。我正在使用以下插件:

  • Git 插件 2.1.0
  • Git 客户端插件 1.7.0
  • Gerrit 触发器 2.11.1

当我在 Gerrit 触发器上使用“测试连接”时,它返回成功,所以我知道凭据正在工作。我在“高级”按钮下使用默认值。

对于我的测试构建类型,我使用了 Jenkins 检查的 git repo(我添加了“ls -l”的构建后步骤,它正确显示了 repo 内容)。我将构建触发器设置为“gerrit event”,对于“gerrit trigger”,我选择了“Check non-reviewed patchsets”,并启用了“patchset created”的触发器。gerrit 项目设置似乎正确。

我无法通过上传新更改或更改的新补丁集来启动构建。当我使用“查询并触发 Gerrit 补丁”按钮手动触发构建时,构建会发生,但不会记录任何投票。我显然错过了部分难题 - 如果我 ssh 进入 gerrit 并执行“流事件”,我会看到我期望看到的事件。

Jenkins - 权威指南 - 来自 O'Reilly 并没有真正涵盖 Gerrit。我试图避免轮询,因为此 Jenkins 实例将管理数十个 git 存储库。

调试的下一步是什么?

git jenkins gerrit

6
推荐指数
1
解决办法
5116
查看次数

OS X El Capitan 和 SMB 共享上的文件权限问题

自从我们升级到 OSX El Capitan 后,我们的 SMB 服务器遇到了一些奇怪的文件权限错误。

我们有一台 ubuntu 服务器机器,通过 SMB 共享文件夹将我们的工作文件托管到我们的每个 Mac 工作站。我们使用Git over SMBSourceTree来构建我们的网站(方便共享相同的数据库和文件),因为我们升级到 OS X El Capitan,文件权限不一样,Git 标记每个文件更改,因为它们的权限从 0664 切换到0775(或 0644 至 0755)。

例如,这是ls -la在我们的开发服务器上使用 SSH的输出

?  CashierTheme git:(develop) ls -la
total 72
drwxrwsr-x  9 nestorwww nestorwww  4096 oct.  12 23:42 .
drwxrwsr-x  6 nestorwww nestorwww  4096 avril 14 17:33 ..
-rw-rw-r--  1 nestorwww nestorwww 12261 oct.  12 23:42 CashierThemeApp.php
-rw-rw-r--  1 nestorwww nestorwww    56 oct.  12 23:42 composer.json
-rw-rw-r--  1 …
Run Code Online (Sandbox Code Playgroud)

afp samba mac-osx git file-permissions

6
推荐指数
1
解决办法
2万
查看次数

GitLab CE 提交后自定义挂钩不起作用

我使用 GitLab 社区版 8.2 并想添加提交后挂钩。

我创建了具有权限的文件 path_to_project.git/custom_hooks/post-commit

$ ls -l1 custom_hooks/post-commit
-rwxr-xr-x 1 git git 45 Dec 14 21:31 custom_hooks/post-commit
Run Code Online (Sandbox Code Playgroud)

和内容

#!/bin/bash
echo "test custom" > /tmp/hook
Run Code Online (Sandbox Code Playgroud)

如此处所述:http : //doc.gitlab.com/ce/hooks/custom_hooks.html

但它不起作用(通过 Web 界面提交检查)。我也尝试过“正常”的 git 钩子放置(project.git/hooks/post-commit),但它也不起作用。

git hook gitlab

6
推荐指数
1
解决办法
2206
查看次数

ECDSA 密钥指纹 - 看起来是 base64 编码,但字符太少

我已经设置了一个GitLab VM,并在其上创建了一个项目。现在我正在尝试使用我的 git 客户端从另一台机器连接到它(Git for Windows v2.7.1 ...也尝试升级到最新版本 2.15.1,但没有变化)。

在 Windows 机器上,我尝试:

git push -u origin --all
The authenticity of host 'localgit.local (10.1.2.3)' can't be established.
ECDSA key fingerprint is SHA256:twmcV7LjBtI9vUsDeFEHeH0lUcBAihWtGye0K9vHCrk.
Are you sure you want to continue connecting (yes/no)? no
Run Code Online (Sandbox Code Playgroud)

我选择“否”是因为当我在虚拟机上仔细检查时,我发现了不同的指纹:

ssh-keygen -lf /etc/ssh/ssh_host_ecdsa_key.pub
256 7e:e4:4e:7f:47:b0:41:75:2c:45:bd:be:f5:44:77:d7 /etc/ssh/ssh_host_ecdsa_key.pub (ECDSA)
Run Code Online (Sandbox Code Playgroud)

好的,它是十六进制格式,所以我将其转换为 base64,对吗?

hex: 7ee44e7f47b041752c45bdbef54477d7
base64: fuROf0ewQXUsRb2+9UR31w==
Run Code Online (Sandbox Code Playgroud)

好吧,这不匹配......如果我走另一条路并将该 base64 指纹转换为十六进制并看看它是什么样子怎么办?结果我不能,它是 43 个字符,并且 base64 字符串的长度必须是 4 的倍数。

关于我在这里缺少什么的任何想法?

git ssh-keys gitlab

6
推荐指数
1
解决办法
2436
查看次数