这两天感冒了在家休养,想着把之前买的 Jetson 开发板用起来,买Jetson的初衷就是用来学习Linux系统,顺道可以部署算法,以及一些其他需求,相比树莓派而言,Jetson开发相对更贵,但是其配备了英伟达的显卡以及CUDA,这一点是树莓派所无法比拟的,正好在家休息就补个坑。之前一直有个想法:如何在开发板上配置 git服务,将自己的项目代码 备份到自己的服务器,即保证数据的版本管理,也保证了数据的安全性,顺道还可以学习下 git / linux 的相关命令。
之前有给自己装备一款NAS,因为功能简单只能当做纯文件存储器使用,因此无法将git部署到NAS,但是无妨 差生文具多,NAS不行 Jetson来凑。
上一次讲了 Windows如何优雅使用Terminal,但是Windows的Terminal终究不如Linux系统的舒服,因此Windows作为生活学习的主力,Jetson开发板配置的Ubuntu20.04作为 学习Linux的主力。
1、jetson 部署 git服务
1.1 安装 git
一般情况下,jetson安装完系统,会自动安装 git,可以通过 git --version
查看安装版本,也可以通过以下命令安装更新 git
sudo apt-get update
sudo apt-get install git # 初次安装 git
1.2 创建 git 用户
非必要性,如果你也跟我一样,是自己使用,其实都无所谓
sudo adduser git
根据自己实际情况填写用户信息,密码需记牢,git账号的信息,可以使用默认设置
创建完 git用户之后,可能存在以下错误:
git is not in the sudoers file. This incident will be reported.
这是因为没有给 git 用户加入到 sudo 配置中,因此在切换到 git用户时,无法使用 sudo 命令
首先修改下 sudoers 的写入权限
chmod u+w /etc/sudoers
然后编辑 sudoers
vim /etc/sudoers
找到 root ALL=(ALL) ALL,在其下方添加
root ALL=(ALL) ALL
git ALL=(ALL) ALL # 将 git 改为你自己的用户名
添加完成后,再将 sudoers的权限给修改回去
chmod u-w /etc/sudoers
这样 git 用户就也可以调用 duso 命令了
1.3 创建 git 仓库
目前需要先创建一个空的仓库,然后才能够进行上传,后续我再测试下直接上传不存在的仓库
选择一个 保存 git仓库的路径,在此以 /git/ 为例
sudo su - git
mkdir /git/demo.git
cd /git/demo.git
git init --bare # 初始化仓库
1.4 修改仓库路径权限
其实创建 git 用户就是避免其他用户不小心修改 其中的仓库,因此创建一个新的用户更加安全,另外,也可以给仓库路径设置 用户权限,是其他用户无法访问,这样就保证了数据的安全性
可以通过以下命令修改 仓库的访问权限
sudo chown -R git:git /git/
其中 -R 是为了保证 /git 路径的权限支持向下兼容,不至于每次都修改权限;
git:git 表示的是 git用户以及 git组,可以通过 id git
查看 git用户所属的 组,其中 uid 是用户名,gid是组名,grous 是用户 git 同时也附加与其他组
uid=1001(git) gid=1001(git) groups=1001(git),29(audio),44(video),103(render),113(i2c),130(gdm),999(gpio),996(weston-launch)
通过 ll
命令就可以查看当前路径下的权限信息,可以看到 git用户已经有了 ./ 以及其中的 DeepSort_Pytorch.git/ 仓库的权限了,并且其他非root用户没有权限
git@ubuntu:/git$ ll
total 12
drwxr-xr-x 3 git git 4096 Jan 16 02:39 ./
drwxr-xr-x 20 root root 4096 Jan 16 02:18 ../
drwxrwxr-x 7 git git 4096 Jan 16 02:43 DeepSort_Pytorch.git/
至此,jetson 已经配置好了 git 服务,只差代码上传
1.5 配置 SSH
博主因为是使用的 windows系统进行上传,通常使用 ssh 连接 jetson,因此还需要再配置下 SSH
sudo apt-get install openssh-server
然后,为 git用户配置 SSH
sudo su - git
mkdir ~/.ssh
touch ~/.ssh/authorized_keys
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
此处需要在 windows系统上生成下 ssh 公钥,方法如下
ssh-keygen -t rsa -C "youremail@example.com"
密钥类型可以用 -t 选项指定,如果没有指定则默认生成用于SSH-2的RSA密钥,这个命令使用的是rsa。
完成之后一般会保存在 C:\Users\Administrator\.ssh\id_rsa
,可以通过 txt文本打开
将其公钥保存至 jetson:~/.ssh/authorized_keys
文件中,这样就不需要每次输入用户名/邮箱名 和 密码了
1.6 启动 git 服务
退出 git 用户,并重启 SSH 服务
exit
sudo service ssh restart
至此,Git 服务器应该已经在 Jetson 上成功部署。
2、Windows 连接 jetson
因为使用的局域网,没有购买公网ip,因此也就无法外网访问了,虽然损失了方便性,但是保证了安全,而且出发点就是在家自用,基本需求满足即可,后续有外网访问的需求再说。
windows连接 ubutnu 一般直接采用 ssh连接,连接方式为 ssh <username>@<jetson_ip>
3、从 Windows 上传仓库到 Jetson
首先需要确保 jetson 上有对应的 git 仓库,没有的话,先创建一个空仓库 见 1.3。然后对windows本次代码 git 初始化,并提交推送 至 jetson的git服务中
git init
git add .
git commit -m "Initial commit"
git remote add origin git@<jetson_ip>:/git/demo.git
3.1 最后推送
使用以下命令将代码推送到 Jetson git服务器
git push -u origin master
这将把你的本地代码推送到 Jetson Git 服务器的 master 分支。如果这是第一次推送,可能需要输入 Git 用户的用户名和密码。
如果你使用 SSH 密钥进行身份验证,确保你的 SSH 密钥已经添加到 Jetson Git 服务器的 ~/.ssh/authorized_keys 文件中。
3.2 仓库拉取
如果在 Jetson 上有其他人推送了更改,你可以使用以下命令拉取这些更改:
git pull
# 或
git pull origin master
这会将 Jetson Git 服务器上的最新更改拉到你的本地仓库。