6

我的问题是

如何允许用户通过 ssh 连接到我的服务器,但仅限于 shell 命令和目录?

我的情况

我正在使用 git 将代码部署到我的服务器。我有两台服务器,第一台是产品服务器,第二台是 git 服务器。

我的团队使用 git 服务器来拉/推代码。

在我的产品服务器上,我设置了 git 客户端。每当我想发布一个版本时,我都会将它推送到我的 git 服务器(master 或其他分支......),然后我 ssh 进入我的产品服务器以提取代码。

我想与我的队友共享代码拉取权限,但不想让他们运行除git之外的任何命令,并将它们限制在一个目录中。

我想限制的目录的所有者是apache:apache,所以如果ssh用户以apache权限运行会很好。

谢谢,

已解决:我将lshell与一组限制命令一起使用。

4

2 回答 2

11

A simple command to disable the shell in a git user is to replace the /usr/bin/bash with /usr/bin/git-shell. Replace it in the /etc/password file or using the command:

usermod -s /usr/bin/git-shell [username]

Check this document from the official Git website: Setting Up the Server. Additional info if you want to have a shell on it but limiting it to a directory use: rbash. Same as git-shell just replace the user shell with it.

于 2013-05-22T04:50:09.623 回答
3

您应该考虑gitolite,这是一个可以ssh 强制命令的授权层

而 ssh 强制命令正是为了将 ssh 限制为一个唯一的命令(在 gitolite 的情况下,这是一个控制访问权限的脚本,并确保只执行 git 命令)。

强制命令

即使您使用 gitolite,单独的 ssh 强制命令(根本不链接到 git)仍然值得考虑,以便控制和限制用户可以通过 ssh 会话执行的操作。


不想安装另一个服务OP Tarzan安装了另一个服务(Ishell ) ,它正是基于 ssh 强制命令;)

于 2013-05-22T06:03:06.740 回答