您的位置:首页 > 其它

十分钟git-服务器搭建ssh登陆

2017-12-13 18:23 204 查看
QQ820688215微信公众号:1首先,创建一个操作系统用户
git
,并为其建立一个
.ssh
目录。
$sudoaddusergit
$sugit
$cd
$mkdir.ssh&&chmod700.ssh
$touch.ssh/authorized_keys&&chmod600.ssh/authorized_keys

2需要为系统用户git
的[code]authorized_keys文件添加一些开发者SSH公钥。假设我们已经获得了若干受信任的公钥,并将它们保存在临时文件中。与前文类似,这些公钥看起来是这样的:[/code]
$cat/tmp/id_rsa.john.pub
ssh-rsaAAAAB3NzaC1yc2EAAAADAQABAAABAQCB007n/ww+ouN4gSLKssMxXnBOvf9LGt4L
ojG6rs6hPB09j9R/T17/x4lhJA0F3FR1rP6kYBRsWj2aThGw6HXLm9/5zytK6Ztg3RPKK+4k
Yjh6541NYsnEAZuXz0jTTyAUfrtU3Z5E003C4oxOj6H0rfIF1kKI9MAQLMdpGW1GYEIgS9Ez
Sdfd8AcCIicTDWbqLAcU4UpkaX8KyGlLwsNuuGztobF8m72ALC/nLF6JLtPofwFBlgc+myiv
O7TCUSBdLQlgMVOFq1I2uPWQOkOWQAHukEOmfjy2jctxSDBQ220ymjaNsHT4kgtZg2AYYgPq
dAv8JggJICUvax2T9va5gsg-keypair
3将这些公钥加入系统用户
git
.ssh
目录下
authorized_keys
文件的末尾:
$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

4
现在我们来为开发者新建一个空仓库。可以借助带
--bare
选项的
gitinit
命令来做到这一点,该命令在初始化仓库时不会创建工作目录:
$cd/opt/git
$mkdirproject.git
$cdproject.git
$gitinit--bare
InitializedemptyGitrepositoryin/opt/git/project.git/
上命令Git创建一个空仓库,服务器上的Git仓库通常都以.git结尾。然后,把仓库所属用户改为git:

$chown-Rgit:gitproject.git

其他开发者可以克隆此仓库,并推回各自的改动,步骤很简单:
$gitclonegit@gitserver:/opt/git/project.git
$cdproject
$vimREADME
$gitcommit-am'fixfortheREADMEfile'
$gitpushoriginmaster
[/code]需要注意的是,目前所有(获得授权的)开发者用户都能以系统用户
git
的身份登录服务器从而获得一个普通shell。如果你想对此加以限制,则需要修改
passwd
文件中(
git
用户所对应)的shell值。借助一个名为
git-shell
的受限shell工具,你可以方便地将用户
git
的活动限制在与Git相关的范围内。该工具随Git软件包一同提供。如果将
git-shell
设置为用户
git
的登录shell(loginshell),那么用户
git
便不能获得此服务器的普通shell访问权限。若要使用
git-shell
,需要用它替换掉bash或csh,使其成为系统用户的登录shell。为进行上述操作,首先你必须确保
git-shell
已存在于
/etc/shells
文件中:
$cat/etc/shells#seeif`git-shell`isalreadyinthere.Ifnot...
$whichgit-shell#makesuregit-shellisinstalledonyoursystem.
$vim/etc/shells#andaddthepathtogit-shellfromlastcommand
现在你可以使用
chsh<username>
命令修改任一系统用户的shell:
$chshgit#andenterthepathtogit-shell,usually:/usr/bin/git-shell将/usr/bin/git-shell复制回车


这样,用户
git
就只能利用SSH连接对Git仓库进行推送和拉取操作,而不能登录机器并取得普通shell。如果试图登录,你会发现尝试被拒绝,像这样:
$sshgit@gitserver
fatal:Interactivegitshellisnotenabled.
hint:~/git-shell-commandsshouldexistandhavereadandexecuteaccess.
Connectiontogitserverclosed.
[/code]

                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: