
SSH全称Secure Shell,是应用层上的一种安全协议,专为远程登录和其他网络服务提供安全性的一种协议
利用SSH协议可以有效防止远程管理过程中的信息泄露问题SSH会把所有传输内容加密,防止“中间人”攻击也能防止DNS欺骗和IP欺骗另外SSH会压缩传输数据,实现更快的传输速度
使用SSH主要就是通过两个ssh key文件:id_ras_xx(私钥)和id_ras_xxpub(公钥)实现的
ssh-keygen -t rsa -C "xxx@gmailcom" #添加ssh key
Enter之后会出现以下界面,让你输入文件要保存的路径和名字,直接Enter的话会默认生成id_rsapub,因为接下来我们要设置多个平台账号的ssh,所以这里给他重新命一个新的名字,比如 id_rsa_公司名_平台名 (id_rsa_alibaba_gitlab)
完成之后会让你输入密码,可以设置为空,直接 Enter 即可看到下图内容出现就表示ssh key已经生成 ~/ssh 目录就会新增两个 id_rsa_xxx 和 id_rsa_xxxpub 的文件
默认的话是会自动加入ssh agent中的,但是我们重命名了,需要手动加一下
ssh-add ~/ssh/id_ras_xx_xx
把id_rsa_xxpub里的内容复制拷贝到git服务器相应的位置即可
至此,如果是采用默认命名的话SSH就已经可用了但由于我们重命名了,还需要配置一下 config 才行在 ~/ssh 目录下新建 config 文件,配置一下内容即可
ps: HOST 和 User 中的数据取自项目地址中的 git clone git@githubcom:socketio/socketio-client-swiftgit中的git@githubcom
我们一般都会有很多不同的git账号,比如GitHub,Gitlab还有国内的gitee,大多数公司也还会使用自己内部的git服务器,那就会有多个账号,这种情况就需要我们在电脑上配置多个账号了也不复杂,只需重复上述的步骤,然后配置下config即可
config参考如下:
至此大功告成
通过以下的步骤,你将在服务器上搭建并使用你自己的Git服务,例如myhostexamplecom。其中的一些步骤,像email通知,限制用户的权限,特定分组的接入管理,都是依据你的要求和现实状况的可选项。还有很多命令,你需要root权限才能执行,所以别忘了用sudo,或者(最好不要)直接切换到root来执行。为有读写权限的用户建立一个分组。根据你的 *** 作系统,你可以用groupadd命令来实现,用vigr来编辑分组文件,或者直接编辑/etc/group文件。在最后,你会在/etc/group文件中看到如下一行
repogroup::10005:marry,john,violet
其中,repogroup是准许接入这个仓库的组的名字。10005是一个独一无二的分组识别数字,marry,john,violet则是获准接入这个仓库的用户。
决定Git仓库的路径。它既可以放在你的home路径下(eg
/home/yourname/gitroot),也可以放在一个专用的路径下(eg
/var/gitroot)
配置权限,让Git用户可以访问这个目录
chmod
g+rx
/path-to/gitroot
chown
:grouprepo
/path-to/gitroot
建立新的Git仓库,叫做newrepo
cd
/path-to/gitroot
git
init
--bare
newrepogit
建立路径认证,以允许用户组访问,同时有针对性的设置Git
cd
newrepogit
chown
-R
:grouprepo
git
config
coresharedRepository
group
find
-type
d
-print0
|
xargs
-0
chmod
2770
find
-type
f
-print0
|
xargs
-0
chmod
g=u
设置提交(commit)的email通知(commit是一条命令),这样当有新的修改提交到仓库的时候,开发者们将会收到一封关于修改内容一览的电子邮件。
echo
'One-line
project
description'
>description
git
config
--local
hooksmailinglist
email-a@examplecom,email-b@examplecom,
git
config
--local
hooksemailprefix
'[DI-PR]
'
git
config
--local
hooksshowrev
"git
show
-C
%s;
echo"
git
config
--local
hooksemailmaxlines
100
通过设置一个称为钩子(hook)的东东,来创建这些email通知。
cd
hooks
cp
post-receivesample
post-receive
chmod
+x
post-receive
从post-receive的脚本中移除掉最后一行注释的#字号,最后语句应该是这样的
/path-to-hooks/post-receive-email
在你的库中先放入一个文件(比如README)。为了避免其他用户在第一次提交时遇到奇怪的错误信息时感到困惑,这是有必要的。
cd
to-your-personal-working-directory
git
clone
myhostexamplecom:/path-to/gitroot/newrepogit
echo
"Short
project
description"
>READMEtxt
git
add
READMEtxt
git
commit
-a
-m
"Add
README
file"
git
push
origin
master
#
第一次仅仅需要T"origin
master"
这个参数
为仓库的其他用户建立账户。依据你系统的不同,你可以通过useradd
或者adduser来实现。
设置用户可以通过公/私钥配对来访问。这包括以下几步:
1)已经有公钥的用户,只需要把公钥发给你就好。
2)没有公钥的用户,必须用ssh-keygen命令来生成一个,然后把ssh/id_rsapub发给你就可以了。
3)之后你必须在他们对应的账户下面建立这种公/私钥配对。复制他的公钥,然后顺序执行下面的命令。
sudo
su
-
username
mkdir
-p
ssh
cat
>>ssh/authorized_keys
<<\EOF
paste-key-as-one-line
EOF
exit
改变用户的账户让他们使用受限的shell。如果你想让你添加进来的用户仅仅使用Git,而不是Unix的所有东西,那么就设置他们的账户,让他们只能使用Git。Git提供了这种专为这种需求设计的受限shell。它通常被安装在
/usr/libexec/git-core/git-shell
or
/usr/local/libexec/git-core/git-shell。因此,对所有你想限制权限的用户,你可以执行以下命令。
sudo
chsh
-s
/usr/libexec/git-core/git-shell
username
告诉你的用户,用下面的语句来克隆仓库到本地。
git
clone
myhostexamplecom:/path-to/gitroot/newrepogit
到了这里,恭喜你,你成功了!1:服务器端创建用户(git)
# sudo addusergit
2:客户端生成公钥,并
创建公钥:ssh-keygen,
在客户端的用户目录下查看生成的公钥和私钥对
#cd ~/ssh
#ls
id_dsa id_dsapub
公钥所在的目录:windows在”C:/User/username/ssh”目录下,linux在”~/ssh”,~代表用户目录
3:服务器git用户下添加各个用户公钥,并配置ssh服务
将各个用户的公钥文件追加在服务器git用户的authorized_keys文件中
$ cat id_rsajohnpub >> ~/ssh/authorized_keys
$ cat id_rsajosiepub >> ~/ssh/authorized_keys
$ cat id_rsajessicapub >> ~/ssh/authorized_keys
修改ssh和authorized_keys的权限)忘记下面的话,会每次输入密码,(ps,被这个坑了好久)
chmod 700 ~/ssh
chmod 600 ~/ssh/authorized_keys
4,在git用户下创建git库
cd gitDIR
mkdir projectgit
cd projectgit
git init –bare
5,客户端使用
提交自己的库
mkdir project
cd project
git init
vi firsttxt
git remote add origin gitserver/gitDIR/projectgit
git push origin master
克隆:git clonegit@gitserver/gitDIR/projectgit
6,限制开发者登陆
默认情况下,能够连接git服务器用户也可以通过ssh直接登陆服务器,那么服务器将会存在被多用户登入的风险,限制的方法是:
Vi /etc/passwd
git:x:1000:1000::/home/git:/bin/sh
该行修改后的样子如下:
git:x:1000:1000::/home/git:/bin/git-shell
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)