如何在云服务器上使用git管理项目(git远程仓库、ssh配置、多密钥对配置)

本篇笔记中的云服务器是CentOS_7服务器,本地系统是Windows10。笔记内容包含了Linux系统中的用户创建、ssh登录(多公钥对配置)、创建远程git根项目、push本地项目到云服务器中。
本文是一篇总结性文章,感谢诸多网友的无私奉献!由于是总结文章些许内容会直接引用参考文章,在文中引用处会尽量注明。

创建用户

在云服务器中管理git项目,直接用root用户去管理是很危险的。本人创建一个名为git的用户,使用密钥对通过ssh鉴权的方式来管理git项目。步骤如下:

  • 创建用户:useradd git,使用root用户登录之后,创建一个用于管理git项目的账号。该账户拥有/home/git位置的文件读写权限。
  • 修改git用户密码:passwd git,密码需要确认两次。
  • 切换用户登录:su git,这一步很重要,涉及到设置ssh密钥配置的步骤。
  • 创建ssh密钥配置文件:
    # 进入/home/git目录,
    cd /home/git
    # 创建git用户的ssh密钥配置位置,每个用户都需要.ssh文件去管理其ssh安全配置
    mkdir .ssh
    # 创建authorized_keys文件,用来存放客户端的公钥
    touch .ssh/authorized_keys
    # 配置文件的读写权限
    chmod 700 .ssh
    chmod 600 .ssh/authorized_keys
    
    上面的步骤特别重要,如果在root用户下创建、配置的.ssh.ssh/authorized_keys文件,使用xshell登录的时候就会提示用户未注册密钥对。

安装ssh

正常来说云服务器都会提前安装有ssh软件的,但考虑特殊情况还是贴一篇参考文章:CentOS 7安装和配置ssh
安装成功之后,就需要进一步配置git用户端的ssh登录密钥了。我生成的密钥对是在Windows10使用Xshell生成的,当然也可以用Windows10上的Git直接生成。
这里记录使用git生成密钥对的命令:

# 生成密钥对,windows会在当前用户目录的.ssh中生成一对密钥对。
ssh-keygen -t rsa -C "***@***"

这里可以设置密码确认两次,亦或是直接回车回车回车,就成生成了密钥对了。名称是
私钥 id_rsa 和 公钥id_rsa.pub。其中公钥是要部署到我们云服务器的git用户/home/git/.ssh/authorized_keys文件中的。
我们可以安装一个用于云服务器上传下载的软件,很方便的:yum install lrzsz
之后(这里使用git用户):

# 进入git的.ssh目录
cd /home/git/.ssh
# 选择生成的id_rsa.pub文件
rz
# 查看并复制公钥内容,之后粘贴到authorized_keys文件中
cat id_rsa.pub
# 也可使用命令追加到authorized_keys文件后面,多个公钥记得换行
cat id_rsa.pub >> authorized_keys

设置完公钥之后就要配置ssh了(这里使用root用户)

# 如果怕把ssh_config文件改坏了,可以使用sz /etc/ssh/sshd_config文件备份到本地,改坏了再`cd /etc/ssh`,然后`rz`备份文件,覆盖源文件即可。
vi /etc/ssh/sshd_config

在这里需要修改总共有4、5处地方,有些朋友的sshd_config可能有点区别,下文会仔细说明。

  • 开启端口:开启22端口,开启该端口时记得配置云服务器的安全组和打开云服务器防火墙的22端口
    Port 22
    AddressFamily any
    ListenAddress 0.0.0.0
    ListenAddress ::
    
  • 配置允许使用ssh登录的用户:
    # 如果你的sshd_config配置中没有改选项,添加即可,多个用户用空格隔开
    AllowUsers root git
    
  • 是否允许root用户通过ssh登录:
    # no就是不允许
    PermitRootLogin yes
    
  • 允许使用公钥对登录
    # no就是不允许,这里设置yes
    PubkeyAuthentication yes
    
  • 公钥配置文件
    # 改配置指向每个用户的/home/'userName'/.ssh/authorized_keys文件
    AuthorizedKeysFile  .ssh/authorized_keys
    
  • 是否允许ssh密码登录
    # 不建议使用密码登录,用密钥对更安全。配置no就不能通过密码登录。但是配置no之前请保证密钥对可以正常登录
    PasswordAuthentication yes
    
  • 其他:RSAAuthentication,有些文章里面也许会配置改选项。这里不是必须的,这是旧版本的配置。如果你的sshd_config文件中存在改选项,那将其配置为RSAAuthentication yes即可
  • Protocol:加上Protocol 2

重启sshd服务service sshd restart,如果重启报错请检查上述内容是否配置出错。

验证ssh登录

使用Windows10中的XShell,新建一个连接,输入云服务器地址、登录用户,验证方式选择云服务器中配置的公钥对应的私钥,看看是否能登录。
能登录的话,到此为止云服务器的ssh配置就ok了。

多个密钥对配置

windows系统
如果你的PC存在多个密钥对,需要和GitHub、Coding、私人git仓库等配对的话,你就需要在个人文件夹的/.ssh下配置一个config文件(文件名就是config,不需要后缀。直接放在.ssh目录下即可),内容如下

# 阿里云服务器
Host xxx.xxx.com(随意名称)                 
HostName xxx.xxx.xxx(ip地址或者域名)
PreferredAuthentications publickey(公钥)
IdentityFile C:\Users\wangzh\.ssh\id_rsa_2048_root(云服务器的公钥对应的私钥)
User root(要登录的用户)
Port 22(端口,默认22的话可以不写)  

# 阿里云git服务器,多个配置后面追加
Host xxx.xxx.com(随意名称)                 
HostName xxx.xxx.xxx(ip地址或者域名)
PreferredAuthentications publickey(公钥)
IdentityFile C:\Users\wangzh\.ssh\id_rsa_2048_git(云服务器的公钥对应的私钥)
User git(要登录的用户)
Port 22(端口,默认22的话可以不写)  

如果你对私钥加了密码,在连接建立的时候就要求你输入密码就好了。
OS X或者Linux系列系统
如果密钥对是从其他地方拷贝过来的话,连接的时候会提示Permission denied (publickey,gssapi-keyex,gssapi-with-mic).
解决办法有3个步骤

  1. 设置私钥权限为700,chmod 700 ~/.ssh/id_rsa_git(密钥文件按照自命名的来)。
  2. 添加密钥文件到/etc/ssh/ssd_config文件中,使用命令ssh-add ~/.ssh/id_rsa_git。当然也可以直接修改/etc/ssh/ssd_config文件。
  3. 同样的,在当前用户的~/.ssh/config文件中配置上述windows系统类似的配置,只是密钥路径需要修改一下。

git创建仓库

参考文章:Centos7搭建Git及安装使用
使用ssh登录git用户,进入用户home目录。创建用于存放git项目的文件夹。我这里操作如下

cd ~
# 存放所有git项目仓库的文件夹
mkdir git_rep
# 创建一个用于存放笔记的git仓库
mkdir note
# 进入该仓库,创建远程git根项目
cd note
git init --bare note.git

至此,用于存放笔记的远程git仓库创建成功。

关联远程仓库

创建一个本地git仓库,随便写点啥。初始化并关联远程仓库

# 初始化本地仓库
git init 
# 提交本地文件
git add -A
git commit -m "首次提交"
# 关键,关联本地仓库到远程仓库,serverAddress是你的云服务器地址
# git是你的用户名,也可以是root,是cat是dog。
# 例如dog@xxxx:/home/dog/git_rep/note/note.git
git remote add origin git@serverAddress:/home/git/git_rep/note/note.git
# 首次push并关联master分支
git push -u origin master

这个时候可能会提示该连接未知,相信yes即可。
如果有多个git仓库,就按照上文描述创建多个git仓库即可。当然也可以安装像GitLab之类的服务器,但是对于配置差的服务器或者出于学习目的,这样子搞搞阵就很好玩了。
本文纯属学习性质,如有错误,劳烦请指出,十分感谢。

至此,使用云服务器来管理git项目的步骤描述完毕了_

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,456评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,370评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,337评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,583评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,596评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,572评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,936评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,595评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,850评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,601评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,685评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,371评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,951评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,934评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,167评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,636评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,411评论 2 342

推荐阅读更多精彩内容