标签: git

让 SSH 服务器转发每个用户的连接

有没有办法强制 OpenSSH(或创建某种代理)仅通过他(或她)提供的用户名将一个用户转发到一台机器,将另一个用户转发到另一台机器?

我遇到以下问题:我要在 Docker 容器中运行 GitLab,同时在主机上运行 SSH 服务器。GitLab 监听 SSH 连接,但它只对“git”用户通过 SSH 密钥区分客户端感兴趣。所以我想创建的设置是以下之一:

  1. 主机上端口 22 上的代理,当提供的用户是“git”时,将整个会话转发到 Docker Gitlab,或者当用户名是时转发到主机 SSH(可能会监听另一个端口,重要的是客户端不知道这一点)不同的。
  2. 主机 SSH 在内部处理除“git”之外的每个用户,并在用户名是“git”时将会话转发到 Docker 容器。

需要明确的是:Docker 容器运行一个网桥,并且可以通过不同于主机 IP 的唯一 IP 地址从主机访问它。

StackOverflow 上也提出了类似的问题(/sf/ask/595381181/),但没有答案可以解决该问题 - 最有帮助的是建议自定义 shell,但我发现没有办法创建类似的东西。

networking linux ssh git docker

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

为什么 ssh 不使用配置文件中设置的身份?

我正在尝试配置某些 git 存储库以使用特定的公钥/私钥进行身份验证。

这是在 ~/.ssh/config 里面

Host Repo
HostName bitbucket.org
User git
IdentityFile ~/.ssh/ynd
LogLevel DEBUG
Run Code Online (Sandbox Code Playgroud)

这是尝试推送到仓库时的日志

debug1: Connecting to bitbucket.org [104.192.143.1] port 22.
debug1: Connection established.
debug1: identity file /Users/evgenipetrov/.ssh/ynd type 1
debug1: key_load_public: No such file or directory
debug1: identity file /Users/evgenipetrov/.ssh/ynd-cert type -1
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_6.9
debug1: Remote protocol version 2.0, remote software version conker_1.0.315-a08d059 app-134
debug1: no match: conker_1.0.315-a08d059 app-134
debug1: Authenticating to bitbucket.org:22 as 'git'
debug1: …
Run Code Online (Sandbox Code Playgroud)

ssh mac-osx git

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

UNIX - 如何授予用户对另一个用户的权限,这样我就不需要 sudo 或输入密码?

我有 2 个用户有问题

git用户 - 用于 gitosis - 所以它是一个无密码用户,只能通过 root 访问...

用户用户 - 我的文件所在的位置

所以我想做的是授予用户git权限以导航到这样的 luddico 文件夹

git@domain.me:~/respositories# cd /home/user/websites/domain.com
Run Code Online (Sandbox Code Playgroud)

然后在用户用户文件(任何文件/文件夹)中执行任何操作,这样我就可以例如

git@domain.com:/home/user/websites/domain.com#  git pull
Run Code Online (Sandbox Code Playgroud)

因为实际上上面提到的操作返回:

error: cannot open .git/FETCH_HEAD: Permission denied
Run Code Online (Sandbox Code Playgroud)

所以当我要求执行这样的操作时,它会请求 git 的密码,顺便说一句,没有任何密码,或者立即取消它

所以,我怎么可以配置用户的git有像在用户root /管理员权限的用户 ,而不需要提供命令之前任何密码或sudo?就像如果它是根一样

  • 如果有一种方法可以只允许从git用户的特定命令,那就更好了

提前致谢

unix permissions git hook

5
推荐指数
1
解决办法
9976
查看次数

如何防止 ssh git push 设置文件所有权?

我在 Ubuntu 服务器上有一个远程裸 Git 存储库,其中的文件归用户my_project和组所有my_project,并相应地设置了权限。所有提交者都是他们自己在组中my_project

当有人提交然后my_user通过 SSH从任何带有用户的 Ubuntu 笔记本电脑推送到服务器时,远程存储库中的一些文件被创建(更新?),因此它们现在属于用户和组my_user

当然,当其他人想要提交时,他现在无法提交,因为他没有写权限。我可以将权限设置为 777,但这不是最佳选择。

有什么办法可以在保持受限写入权限的同时解决这个问题?

permissions ssh git

5
推荐指数
1
解决办法
8965
查看次数

当路径改变时,两个分支之间的 git diff

我需要了解由我当前的 master 和分支 new_branch 表示的两个版本之间的文件更改。通常,如果两个分支中的路径/名称相同,我会运行以下命令。

git diff new_branch -- 路径/文件

当两个分支之间的路径/文件不同时我该怎么办?

我可以回退并创建另一个克隆的存储库并签出 new_branch。然后做unix的sdiff。我只是想知道 git diff 的作者是否预料到了这种情况并内置了一些东西来处理它。

——谢谢你——小迈克

git

5
推荐指数
1
解决办法
4382
查看次数

推送提交到 git (gitolite) 存储库会弄乱文件权限(不再有 trac 访问权限)

已经张贴在这里,所以请随时在那里回答。

每次我向 git 服务器提交/推送某些内容时,文件权限都会发生变化(存储库中所有添加/编辑的文件都没有对该组的读取和执行访问权限)。因此,trac 无法访问存储库。

我需要以不同的方式更改文件夹的权限吗?

chmod u=rwx,g=rx,o= -R /home/git/repositories

还是我需要以某种方式设置 gitolite 以写入具有不同权限的文件???

问候,克莱门斯

linux debian trac git file-permissions

5
推荐指数
1
解决办法
2049
查看次数

GIT、SSH 和 GIT-SHELL

我正在尝试使用 ssh-keys 和 git-shell 设置安全的 git 存储库服务器。由于我们的用户数据库存储在中央 LDAP 目录中,我无法将用户的默认 shell 更改为 git-shell,因此我尝试将 git-shell 命令添加到 authorized_users 文件中的公钥,如下所示:

command="git-shell -c $SSH_ORIGINAL_COMMAND" ssh-dss AAAAB3NzaC1kc3...
Run Code Online (Sandbox Code Playgroud)

但是,git-shell 甚至不允许我克隆存储库:

    dhcp202:git-ws frank$ git clone ssh://gitserver/var/repos/git/myrepo/
    Cloning into myrepo...
    fatal: What do you think I am? A shell?
    fatal: The remote end hung up unexpectedly
Run Code Online (Sandbox Code Playgroud)

任何想法表示赞赏...

ssh git

5
推荐指数
1
解决办法
3322
查看次数

不能 git rm 目录

我不小心在我应该提交的项目列表中添加了一个目录。现在,当我尝试运行 git rm dirname 时,出现错误

rm 'dirname'
fatal: git rm: 'dirname': Is a directory
Run Code Online (Sandbox Code Playgroud)

我尝试了以下命令git rm -rf dirnamegit rm dirname --force,但这些都不起作用。他们都产生了相同的错误信息。

如何防止 dirname 被提交?

我正在使用 git 版本 1.7.0.4

谢谢

补充说明

好吧,它似乎git rm -rf dirname只在某些条件下有效。我进行了一些测试,通常可以正常工作。但是,如果dirname它本身是一个单独控制的 git 存储库,其中包含 .git 目录,它将失败。我有这个设置,因为它dirname是我的许多项目共享的 git 控制框架。

git rm

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

使用“puppet parser validate”验证 Puppet 清单的问题

puppet parser validate在 git pre-commithook 中使用,以便在将文件提交到我们的 Puppet 配置存储库之前发现问题。不幸的是,这个命令似乎是一个非常轻量级的语法检查,它只标记错误,例如不平衡的引号和括号。

validate命令似乎并未实际解析配置并查找无效属性、未定义引用等内容。例如,以下情况不会导致投诉:

file { 'somefile': requires => File['some-other-file'] }
Run Code Online (Sandbox Code Playgroud)

在这个例子中,requires应该是require. 同样,这也不会产生错误:

file {'somefile': require => File['file-that-does-not-exist']}
Run Code Online (Sandbox Code Playgroud)

没有资源定义file-that-does-not-exist

有没有办法在不实际应用配置的情况下捕获这些类型的错误?我希望puppet apply命令上有某种标志,可以在不进行更改的情况下完全解析配置,但据我所知,Puppet 2.7.1 中不存在这样的选项。

更新

puppet apply --noop似乎在另一个方向上太努力了。它将尝试stat()在清单中引用的任何文件,如果它尝试stat()当前用户无法访问的文件,这通常会导致它失败并出现权限错误。

其他人在做什么?

git puppet

5
推荐指数
1
解决办法
1399
查看次数

符号链接 /etc conf 文件是一种不安全的做法吗?

为了管理服务器的配置,我将一些配置文件(位于 /etc 中)置于版本控制之下(在主文件夹中),然后从它们的 /etc 位置符号链接到它们:

/etc/someprog/c.conf -> /home/ubuntu/etc-config/someprog/c.conf
Run Code Online (Sandbox Code Playgroud)

这是一个合理的方法吗?任何潜在的缺点?

configuration symbolic-link git configuration-management symlink

5
推荐指数
1
解决办法
1341
查看次数