资讯详情

Git - 设置服务器

设置服务器

让我们在服务器端设置上进行演练 SSH 访问的过程。在此示例中,您将使用该方法对用户进行身份验证。我们还假设您正在运行像Ubuntu这样的标准Linux发行版。authorized_keys 首先,为用户创建用户帐户和目录。git.ssh

$ sudo adduser git $ su git $ cd $ mkdir .ssh && chmod 700 .ssh $ touch .ssh/authorized_keys && chmod 600 .ssh/authorized_keys 

接下来,您需要向用户的文件添加一些开发人员 SSH 公钥。假设你有一些值得信赖的公钥,并且已经存储在临时文件中。同样,公钥看起来像这样:authorized_keysgit

$ cat /tmp/id_rsa.john.pub ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCB007n/ww ouN4gSLKssMxXnBOvf9LGt4L ojG6rs6hPB09j9R/T17/x4lhJA0F3FR1rP6kYBRsWj2aThGw6HXLm9/5zytK6Ztg3RPKK 4k Yjh6541NYsnEAZuXz0jTTyAUfrtU3Z5E003C4oxOj6H0rfIF1kKI9MAQLMdpGW1GYEIgS9Ez Sdfd8AcCIicTDWbqLAcU4UpkaX8KyGlLwsNuuGztobF8m72ALC/nLF6JLtPofwFBlgc myiv O7TCUSBdLQlgMVOFq1I2uPWQOkOWQAHukEOmfjy2jctxSDBQ220ymjaNsHT4kgtZg2AYYgPq dAv8JggJICUvax2T9va5 gsg-keypair 

您只需将其附加到用户目录中的用户文件中:gitauthorized_keys.ssh

$ cat /tmp/id_rsa.john.pub >> ~/.ssh/authorized_keys $ cat /tmp/id_rsa.josie.pub >> ~/.ssh/authorized_keys $ cat /tmp/id_rsa.jessica.pub >> ~/.ssh/authorized_keys 

现在,您可以在没有工作目录的情况下,通过使用该选项:git init–bare

$ cd /srv/git $ mkdir project.git $ cd project.git $ git init --bare Initialized empty Git repository in /srv/git/project.git/ 

然后,John、Josie 或 Jessica 您可以将项目的第一个版本添加到远程版本并推送到存储库中。请注意,每次添加项目时,都必须有人对计算机进行处理 shell 攻击并创建裸仓库。让我们使用主机名作为您设置用户和存储库的服务器。如果你在里面运行它,并且会运行它 DNS 将服务器设置为指向服务器,然后您可以使用这些命令(假设这是一个包含文件的现有项目):gitservergitgitservermyproject

# on John's computer $ cd myproject $ git init $ git add . $ git commit -m 'Initial commit' $ git remote add origin git@gitserver:/srv/git/project.git $ git push origin master 

此时,其他人可以克隆它,轻松地将变化推回去:

$ git clone git@gitserver:/srv/git/project.git $ cd project $ vim README $ git commit -am 'Fix for README file' $ git push origin master 

使用此方法,您可以快速启动和操作少数开发人员的读写 Git 服务器。

您应该注意,所有这些用户也可以登录服务器并获得用户身份shell。如果你想限制它,你必须限制它 shell 更改为文件中的其他内容。git/etc/passwd

您可以很容易地将用户账户限制为只 Git 并使用相关活动 Git 附带的有限 shell 工具。如果将此设置为用户帐户登录 shell,账户对服务器不能正常 shell 访问权限。如果您想使用此选项,请指定更换或登录该帐户 shell 指定。因此,您必须首先添加命令的完整路径名(如果未添加):gitgit-shellgitgit-shellbashcshgit-shell/etc/shells

$ cat /etc/shells   # see if git-shell is already in there. If not... $ which git-shell   # make sure git-shell is installed on your system. $ sudo -e /etc/shells  # and add the path to git-shell from last command 

现在,您可以使用以下命令辑用户的 shell:chsh -s

$ sudo chsh git -s $(which git-shell)

现在,用户仍然可以使用 SSH 连接来推送和拉取 Git 存储库,但不能在计算机上执行 shell 操作。如果您尝试,您会看到登录被拒绝,如下所示:git

$ ssh git@gitserver
fatal: Interactive git shell is not enabled.
hint: ~/git-shell-commands should exist and have read and execute access.
Connection to gitserver closed.

此时,用户仍然能够使用SSH端口转发来访问git服务器能够访问的任何主机。如果要防止这种情况,可以编辑文件,并在要限制的每个键前面附加以下选项:authorized_keys

no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty

结果应如下所示:

$ cat ~/.ssh/authorized_keys
no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty ssh-rsa
AAAAB3NzaC1yc2EAAAADAQABAAABAQCB007n/ww+ouN4gSLKssMxXnBOvf9LGt4LojG6rs6h
PB09j9R/T17/x4lhJA0F3FR1rP6kYBRsWj2aThGw6HXLm9/5zytK6Ztg3RPKK+4kYjh6541N
YsnEAZuXz0jTTyAUfrtU3Z5E003C4oxOj6H0rfIF1kKI9MAQLMdpGW1GYEIgS9EzSdfd8AcC
IicTDWbqLAcU4UpkaX8KyGlLwsNuuGztobF8m72ALC/nLF6JLtPofwFBlgc+myivO7TCUSBd
LQlgMVOFq1I2uPWQOkOWQAHukEOmfjy2jctxSDBQ220ymjaNsHT4kgtZg2AYYgPqdAv8JggJ
ICUvax2T9va5 gsg-keypair

no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty ssh-rsa
AAAAB3NzaC1yc2EAAAADAQABAAABAQDEwENNMomTboYI+LJieaAY16qiXiH3wuvENhBG...

现在 Git 网络命令仍然可以正常工作,但用户将无法获取 shell。如输出所述,您还可以在用户的主目录中设置一个目录,以稍微自定义命令。例如,您可以限制服务器将接受的 Git 命令,或者您可以自定义用户在尝试通过 SSH 时看到的消息。运行以获取有关自定义 shell 的详细信息。gitgit-shellgit help shell

标签: e003公母对接连接器

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台