一、远程登录服务器
远程登录方式很多,常用 ssh 或者 putty,这里只介绍下 ssh
ssh远程登录用户名和ip 按实际情况填写
$ ssh pi@192.168.102.207
使用win7 如果遇到如下问题
$ ssh [email protected]
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.
The fingerprint for the ECDSA key sent by the remote host is
SHA256:E13usrfN0xcsMQjXPRWhM/Odq/Z4Idd+vRiCuFuSen4.
Please contact your system administrator.
Add correct host key in /c/Users/user/.ssh/known_hosts to get rid of this message.
Offending ECDSA key in /c/Users/user/.ssh/known_hosts:13
ECDSA host key for 192.168.102.207 has changed and you have requested strict checking.
Host key verification failed.
解决方法:
C:\Users\user\.ssh\known_hosts
进入上面路径,将对应ip 的公钥删除即可,不可使用 windows 自带的文本编辑器,可选用netepad++
二、同步时间
NTP(Network Time Protocol,网络时间协议)是用来使网络中的各个计算机时间同步的一种协议。NTP可以使计算机时钟与 Internet 时间服务器同步。 这意味着可以更新计算机上的时钟,以与时间服务器上的时钟匹配,这有助于确保计算机上的时钟是准确的。它的用途是把计算机的时钟同步到世界协调时间UTC,其精度在局域网内可达0.1ms,在互联网上绝大多数的地方其精度可以达到1-50ms。
运行以下命令,启用NTP:
sudo timedatectl set-ntp true
更改时区
sudo dpkg-reconfigure tzdata
其后全选择 None of the above 然后按回车,
再选择 GMT -8
最后查看时间是否正确
pi@raspberrypi:~ $ date
三、安装 vim 和 git
获取最新的软件包
pi@raspberrypi:~ $ sudo apt-get update
安装 vim
pi@raspberrypi:~ $ sudo apt-get -y install vim
安装git
pi@raspberrypi:~ $ sudo apt-get install git
四、创建gitadmin 用户,并生成公钥私钥
创建 gitadmin 用户
pi@raspberrypi:~ $ sudo adduser gitadmin
创建用户会要求输入密码,输入密码后,其它直接回车,使用默认即可
切换至gitadmin 用户
pi@raspberrypi:~ $ su gitadmin
gitadmin@raspberrypi:/home/pi $ cd ~
生成公钥私钥
gitadmin@raspberrypi:~ $ ssh-keygen
按三次回车,第一次是确认路径,后面是密码和确认密码
将公钥拷贝至 /tmp
gitadmin@raspberrypi:~/.ssh $ cp id_rsa.pub /tmp/gitadmin.pub
五、切换回pi 用户,再创建git 用户
pi@raspberrypi:~ $ sudo adduser git
创建用户会要求输入密码,输入密码后,其它直接回车,使用默认即可
六、安装 gitolite
切换为 git 用户
pi@raspberrypi:~ $ su git
git@raspberrypi:/home/pi $ cd ~
输入刚才创建用户时的密码
然后克隆 gitolite
git@raspberrypi:~ $ git clone git://github.com/sitaramc/gitolite
再在用户目录下新建bin目录
git@raspberrypi:~ $ mkdir -p bin
执行
git@raspberrypi:~ $ gitolite/install -to bin
设置管理员的私钥
git@raspberrypi:~/bin $ ./gitolite setup -pk /tmp/gitadmin.pub
执行结果如下
Initialized empty Git repository in /home/git/repositories/gitolite-admin.git/
Initialized empty Git repository in /home/git/repositories/testing.git/
WARNING: /home/git/.ssh missing; creating a new one
(this is normal on a brand new install)
WARNING: /home/git/.ssh/authorized_keys missing; creating a new one
(this is normal on a brand new install)
至此git 用户目录下已经有如下目录
git@raspberrypi:~ $ ls
bin gitolite projects.list repositories
七、使用 gitolite 方法
切换至gitadmin 用户
git@raspberrypi:~ $ su gitadmin
gitadmin@raspberrypi:/home/git $ cd ~
克隆仓库 gitolite-admin
gitadmin@raspberrypi:~ $ git clone git@127.0.0.1:gitolite-admin
修改用户权限
查看目录 gitolite-admin
gitadmin@raspberrypi:~/gitolite-admin $ ls
conf keydir
这两个目录
conf 管理repo(增删,权限)
keydir 管理SSH用户公钥
添加仓库,或者修改用户权限,都可通过修改 conf 目录下的 gitolite 文件来实现
新增用户,可以通过keydir实现
先看conf
gitadmin@raspberrypi:~/gitolite-admin/conf $ cat gitolite.conf
repo gitolite-admin
RW+ = gitadmin
repo testing
RW+ = @all
repo 为 repository 缩写
如果需要添加仓库,按照上面方式书写,再用git 提交即可,如
repo gitolite-admin
RW+ = gitadmin
repo testing
RW+ = @all
repo testing2
RW+ = @all
几种权限组
权限组: Owner
仓库的拥有者,可以对仓库做任何想做的事情,比如push, 修改其它人访问这个仓库的权限,甚至删除,至少需要有一个人
权限组: RW
可读写组, clone, push, pull
权限组: R
可读组, clone, pull
其中 Owner包含 RW, RW权限 包含 R
增加用户
在用户电脑上使用scp 将公钥拷贝至git管理员电脑上,如下
$ scp id_rsa_copy.pub gitadmin@192.168.102.207:~/gitolite-admin/keydir/user.pub
执行结果
[email protected]’s password:
id_rsa_copy.pub 100% 392 129.9KB/s 00:00
执行完成后,在git 管理员电脑上,使用 gitadmin 用户执行
gitadmin@raspberrypi:~ $ cd gitolite-admin/
gitadmin@raspberrypi:~/gitolite-admin $ git status
执行结果
On branch master
Your branch is up-to-date with ‘origin/master’.
Untracked files:
(use “git add …” to include in what will be committed)
keydir/user.pub
nothing added to commit but untracked files present (use “git add” to track)
user.pub 就是刚才拷贝的用户公钥
提交改动
gitadmin@raspberrypi:~/gitolite-admin $ git add -A
gitadmin@raspberrypi:~/gitolite-admin $ git commit -m "add user user"
如下情况是因为没有配置用户名,或者用户邮箱,因为git 的每次改动,都需要记录是谁做的修改
* Please tell me who you are.
Run
git config –global user.email “[email protected]”
git config –global user.name “Your Name”
to set your account’s default identity.
Omit –global to set the identity only in this repository.
fatal: empty ident name (for <(null)>) not allowed
下面添加用户名及邮箱
gitadmin@raspberrypi:~/gitolite-admin $ git config --global user.name "gitadmin"
gitadmin@raspberrypi:~/gitolite-admin $ git config --global user.email "gitadmin@raspberrypi"
然后再提交
gitadmin@raspberrypi:~/gitolite-admin $ git commit -m "add user user"
[master d2f096e] add user user
1 file changed, 1 insertion(+)
create mode 100644 keydir/user.pub
最后在试一下使用新添加的用户,去克隆git 上的 testing 仓库,如果不需要输入密码,便是成功了
后期如果需要移除仓库,只需将conf 文件中对应的仓库给移除
gitadmin@raspberrypi:~/gitolite-admin/conf $ vim gitolite.conf
并进入git 用户,移除repositories 目录下对应的仓库即可
如test 仓库
git@raspberrypi:~ $ cd repositories/
git@raspberrypi:~/repositories $ ls
gitolite-admin.git test.git testing.git
git@raspberrypi:~/repositories $ rm -rf test.git/
这样就移除了仓库 test