美文网首页
Git配置多个SSH-Key & python中git的使用

Git配置多个SSH-Key & python中git的使用

作者: Mikasa___ | 来源:发表于2020-05-11 13:29 被阅读0次

    一、配置多个SSH-Key

    当前电脑已设置过了一个ssh-key,终端查看已配置的SSH-Key文件

    cd ~/.ssh/
    $ ls
    id_rsa.pub
    id_rsa

    现在再配置另一个git账号的ssh-key,生成ssh-key文件时,文件用不同名称来区分,如git_key_rsa
    $ ssh-keygen -t rsa -C "XXXXXX@XXX.com” -f ~/.ssh/git_key_rsa
    此时会生成 git_key_rsa和git_key_rsa.pub私钥和公钥

    cd ~/.ssh/
    $ ls
    id_rsa.pub
    id_rsa
    git_key_rsa.pub
    git_key_rsa

    1.将git_key_rsa.pub中的内容粘帖到GitLab服务器code.xxx.com的SSH-key的配置中。
    2.通过config配置文件设置访问不同host,不同用户名使用不同的key,即电脑访问code.xxx.com时使用publickey登录,电脑将自己的私钥发送过去,根据用户名区分,发送的是 git_key_rsa 而不是id_rsa

    vi ~/.ssh/config
    Host git #自定义名称
    HostName code.xxxx.com #域名或ip
    User 登录名
    PreferredAuthentications publickey
    IdentityFile ~/.ssh/git_key_rsa

    注意IdentityFile后面这项~/.ssh/git_key_rsa 文件名在生成的时候如果有个空格,设置的时候需要末尾加上空格,否则找不到这个文件
    config文件的配置参数
    Host : Host可以看作是一个你要识别的模式,对识别的模式,进行配置对应的的主机名和ssh文件
    HostName : 要登录主机的主机名
    User : 登录名
    PreferredAuthentications:登录验证方式
    IdentityFile : 指明上面User对应的identityFile路径

    设置了publickey的验证方式,访问hostname为code.xxx.com并且会根据用户名的不同,去使用设置的IdentityFile里面的private key。PreferredAuthentications设置为password时,则登录验证时需要输入密码。

    这种设置多个SSH-Key的方法适用于相同host不同user,不同host相同user,不同host不同user,只要配置成相对应的就好。注意私钥文件路径,是否有空格啥的。
    配置好之后 查看.ssh

    cd ~/.ssh/
    $ ls
    config
    id_rsa.pub
    id_rsa
    git_key_rsa.pub
    git_key_rsa
    known_hosts

    ps:ssh登录两种方式:
    ssh 用户@ip 配置文件的user@HostName的ip
    ssh 自定义名称 配置文件的host

    记录一下当时生成私钥文件路径有空格的场景:为了区分本地已有的私钥文件,最开始选了其他路径(如下载)放私钥文件,私钥文件生成以后,并没有存放在这个指定的文件夹下面,而是放在和它同级的地方,而且这个私钥文件路径有个空格


    image.png

    二、python 运行git clone

    1.远程git 上新建工程,在本地文件夹下将本地代码push

    cd git_pulled
    git init
    git remote add origin git@code.xxxx.com:test/xxx.git
    git add .
    git commit -m "Initial commit"
    git push

    git_pulled下的本地仓库与远程git仓库建立了关联
    ps: 终端在git_pulled下运行 git clone 会把工程下载到一个大目录xx,xx是工程名,需要再进入这个目录xx下,进行git pull 。本地git仓库在xx里面


    image.png
    image.png

    2.通过python去git clone ,下载GitPython包

    from git import Repo
    
    git.Repo.clone_from('https://code.xxxxx.com/test/project.git', '../git_pulled')
    

    第一个参数是工程地址,第二个参数是目的文件夹,下载到目的文件夹里面,是工程里的内容,不带外面那个名称是工程名的大目录,
    这种方式在git clone 时,本地git_pulled目录下初始化了git仓库
    3.继续git pull ,从git_pulled目录下

    #使用包含 .git 文件夹的版本库路径创建 git.Repo 对象
    r = Repo("../git_pulled")
    r.remote().pull()
    

    4.其他git操作

    # 新建版本库对象
    repo = Repo('路径')
    # 获取版本库暂存区
    index = repo.index
    # 添加修改文件
    index.add(['new.txt'])
    # 提交修改到本地仓库
    index.commit('this is a test')
    
    # 获取远程仓库
    remote = repo.remote()
    # 拉去远程仓库数据
    remote.pull()
    # 推送本地修改到远程仓库
    remote.push()
    

    相关文章

      网友评论

          本文标题:Git配置多个SSH-Key & python中git的使用

          本文链接:https://www.haomeiwen.com/subject/lcmynhtx.html