zoukankan      html  css  js  c++  java
  • 十分钟git-服务器搭建ssh登陆

    QQ820688215

    微信公众号:

    1首先,创建一个操作系统用户 git,并为其建立一个 .ssh 目录。

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

    2需要为系统用户 gitauthorized_keys 文件添加一些开发者 SSH 公钥。 假设我们已经获得了若干受信任的公钥,并将它们保存在临时文件中。 与前文类似,这些公钥看起来是这样的:
    $ cat /tmp/id_rsa.john.pub
    ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCB007n/ww+ouN4gSLKssMxXnBOvf9LGt4L
    ojG6rs6hPB09j9R/T17/x4lhJA0F3FR1rP6kYBRsWj2aThGw6HXLm9/5zytK6Ztg3RPKK+4k
    Yjh6541NYsnEAZuXz0jTTyAUfrtU3Z5E003C4oxOj6H0rfIF1kKI9MAQLMdpGW1GYEIgS9Ez
    Sdfd8AcCIicTDWbqLAcU4UpkaX8KyGlLwsNuuGztobF8m72ALC/nLF6JLtPofwFBlgc+myiv
    O7TCUSBdLQlgMVOFq1I2uPWQOkOWQAHukEOmfjy2jctxSDBQ220ymjaNsHT4kgtZg2AYYgPq
    dAv8JggJICUvax2T9va5 gsg-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 选项的 git init 命令来做到这一点,该命令在初始化仓库时不会创建工作目录:

    $ cd /opt/git
    $ mkdir project.git
    $ cd project.git
    $ git init --bare
    Initialized empty Git repository in /opt/git/project.git/
    上命令Git创建一个空仓库,服务器上的Git仓库通常都以.git结尾。然后,把仓库所属用户改为git:
    $ chown -R git:git project.git
     
    其他开发者可以克隆此仓库,并推回各自的改动,步骤很简单:
    $ git clone git@gitserver:/opt/git/project.git
    $ cd project
    $ vim README
    $ git commit -am 'fix for the README file'
    $ git push origin master


    需要注意的是,目前所有(获得授权的)开发者用户都能以系统用户 git 的身份登录服务器从而获得一个普通 shell。 如果你想对此加以限制,则需要修改 passwd 文件中(git 用户所对应)的 shell 值。

    借助一个名为 git-shell 的受限 shell 工具,你可以方便地将用户 git 的活动限制在与 Git 相关的范围内。该工具随 Git 软件包一同提供。 如果将 git-shell 设置为用户 git 的登录 shell(login shell),那么用户 git 便不能获得此服务器的普通 shell 访问权限。 若要使用 git-shell,需要用它替换掉 bash 或 csh,使其成为系统用户的登录 shell。 为进行上述操作,首先你必须确保 git-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.
    $ vim /etc/shells  # and add the path to git-shell from last command

    现在你可以使用 chsh <username> 命令修改任一系统用户的 shell:

    $ chsh git  # and enter the path to git-shell, usually: /usr/bin/git-shell   将 /usr/bin/git-shell复制回车
     

    这样,用户 git 就只能利用 SSH 连接对 Git 仓库进行推送和拉取操作,而不能登录机器并取得普通 shell。 如果试图登录,你会发现尝试被拒绝,像这样:

    $ 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.







  • 相关阅读:
    《java程序设计》201671010143 周结(11)
    《java程序设计》周结(10)
    《java程序设计》(9)
    201671010142 <<面向对象程序设计(Java) 实验十五 线程 感悟和总结>>
    201671010142 2017-2 《java第十二十三章学习感悟》
    201671010142 2017-2 《java第十二章学习感悟》
    201671010142 2017-2 《java第十一章学习感悟》
    201671010142 2017-2 《java第十章学习感悟》
    201671010142 2017-2 《java第九章学习感悟》
    201671010142 2017-2 《java第八章学习感悟》
  • 原文地址:https://www.cnblogs.com/Amos-Turing/p/8034331.html
Copyright © 2011-2022 走看看