git通过SSH指定秘钥文件克隆代码的三种方法

这篇具有很好参考价值的文章主要介绍了git通过SSH指定秘钥文件克隆代码的三种方法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

github官方操作文档:Generating a new SSH key and adding it to the ssh-agent - GitHub Docs

操作流程如下

1.生成一个新的ssh文件(your_email@example.com 替换为自己的邮箱)

ssh-keygen -t ed25519 -C "your_email@example.com"

# 如果系统不支持 Ed25519  算法,可以使用下面方法创建
# ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

git ssh clone,技能,linux,Linux tools,ssh,linux,git,gitconfig,秘钥文件

# 如果需要给秘钥设置密码,也可以在这两步的时候,设置密码
> Enter passphrase (empty for no passphrase): [Type a passphrase]
> Enter same passphrase again: [Type passphrase again]

2.添加公钥到github

复制公钥内容到剪贴板

git ssh clone,技能,linux,Linux tools,ssh,linux,git,gitconfig,秘钥文件

打开浏览器,登录github.com ,右上角,点击settings

git ssh clone,技能,linux,Linux tools,ssh,linux,git,gitconfig,秘钥文件

 找到 SSH and GPG keys ,点击进入

git ssh clone,技能,linux,Linux tools,ssh,linux,git,gitconfig,秘钥文件

 点击添加

git ssh clone,技能,linux,Linux tools,ssh,linux,git,gitconfig,秘钥文件

 git ssh clone,技能,linux,Linux tools,ssh,linux,git,gitconfig,秘钥文件

 测试权限是否正常,能否通过ssh访问git

ssh -T git@github.com

 a.访问成功如下:git ssh clone,技能,linux,Linux tools,ssh,linux,git,gitconfig,秘钥文件

b.访问失败如下:

git ssh clone,技能,linux,Linux tools,ssh,linux,git,gitconfig,秘钥文件

 访问失败,需要检查公钥文件是否添加到github

其他机器通过指定秘钥文件访问【方式一】 

 1.创建目录,并拷贝秘钥文件该目录下,并修改为0600权限

mkdir -pv ~/.ssh_git

# 将私钥文件拷贝到该目录,并修改权限
chmod 0600 -R ~/.ssh_git

2.启动ssh-agent代理,并添加私钥,然后进行测试

eval "$(ssh-agent -s)"
ssh-add ~/.ssh_git/id_ed25519
ssh -T git@github.com

git ssh clone,技能,linux,Linux tools,ssh,linux,git,gitconfig,秘钥文件

当ssh-agent进程结束时,将失去访问权限,若想继续访问,还需要重新执行操作

 git ssh clone,技能,linux,Linux tools,ssh,linux,git,gitconfig,秘钥文件

 重新添加私有执行

git ssh clone,技能,linux,Linux tools,ssh,linux,git,gitconfig,秘钥文件

 其他机器通过指定秘钥文件访问【方式二】 

通过 .gitconfig 配置文件进行配置,该配置针对git命令

core.sshCommand

If this variable is set, git fetch and git push will use the specified command instead of ssh when they need to connect to a remote system. The command is in the same form as the GIT_SSH_COMMAND environment variable and is overridden when the environment variable is set.

git config --global core.sshCommand 'ssh -i ~/.ssh_git/id_ed25519 -p 22'

该操作会在用户家目录自动生成.gitconfig配置文件,内容如下

git ssh clone,技能,linux,Linux tools,ssh,linux,git,gitconfig,秘钥文件

测试,需要指定克隆私有仓库进行测试,下图表示测试成功

git ssh clone,技能,linux,Linux tools,ssh,linux,git,gitconfig,秘钥文件

 其他机器通过指定秘钥文件访问【方式三】 

通过 GIT_SSH_COMMAND 环境变量实现访问

 $GIT_SSH_COMMAND takes precedence over $GIT_SSH, and is interpreted by the shell, which allows additional arguments to be included. $GIT_SSH on the other hand must be just the path to a program (which can be a wrapper shell script, if additional arguments are needed).

export GIT_SSH_COMMAND="ssh -i ~/.ssh_git/id_ed25519 -p 22"

git ssh clone,技能,linux,Linux tools,ssh,linux,git,gitconfig,秘钥文件

注意:GIT_SSH_COMMAND  的优先权大于 GIT_SSH

通过 GIT_SSH 环境变量实现访问

官方文档:Git - git Documentation

      GIT_SSH, if specified, is a program that is invoked instead of ssh when Git tries to connect to an SSH host. It is invoked like $GIT_SSH [username@]host [-p <port>] <command>. Note that this isn’t the easiest way to customize how ssh is invoked; it won’t support extra command-line parameters, so you’d have to write a wrapper script and set GIT_SSH to point to it. It’s probably easier just to use the ~/.ssh/config file for that.

 大概意思指定了 GIT_SSH ,则当git通过ssh连接主机是,调用GIT_SSH设置的脚本来替换默认的ssh命令

1.创建一个文件,内容如下 ~/.ssh_git/ssh-git.sh

vim ~/.ssh_git/ssh-git.sh
#!/bin/bash
if [ -z "$PKEY" ]; then
        # if PKEY is not specified, run ssh using default keyfile
        ssh "$@"
else
        ssh -i "$PKEY" -p 22 "$@"
fi

2.添加可执行权限

chmod a+x ~/.ssh_git/ssh-git.sh

3.通过添加私有方式进行访问

export GIT_SSH=~/.ssh_git/ssh-git.sh
PKEY=~/.ssh_git/id_ed25519 git clone git@github.com:nineaiyu/scorems.git

git ssh clone,技能,linux,Linux tools,ssh,linux,git,gitconfig,秘钥文件

 4.整理上面操作步骤,可总结一个脚本git.sh,内容如下:

#!/bin/bash
# 

if [ $# -eq 0 ]; then
    echo "git.sh -i ssh-key-file git-command"
    exit 1
fi

git_ssh_tmp=~/.git_ssh.tmp

trap "rm -f ${git_ssh_tmp}" 0

if [ "$1" = "-i" ]; then
    SSH_KEY=$2
    shift
    shift
    echo "ssh -i $SSH_KEY -p 22 \$@" > ${git_ssh_tmp}
    chmod +x ${git_ssh_tmp}
    export GIT_SSH=${git_ssh_tmp}
fi

[ "$1" = "git" ] && shift

git "$@"

执行操作如下:

chmod a+x git.sh
./git.sh -i ~/.ssh_git/id_ed25519  clone git@github.com:nineaiyu/scorems.git

 git ssh clone,技能,linux,Linux tools,ssh,linux,git,gitconfig,秘钥文件文章来源地址https://www.toymoban.com/news/detail-819652.html

到了这里,关于git通过SSH指定秘钥文件克隆代码的三种方法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Linux系统配置GIT的SSH秘钥

    Linux安装git // git安装命令 $ apt-get install git // 安装完成,查看git的版本 $ git --version 配置Git参数 $ git config --global user.name xxx //xxx为自己用户名 $ git config --global user.email xxx@xx.com //xxx为自己邮箱 // 查看git参数信息 $ git config --list 生成秘钥 $ ssh-keygen -t rsa -C xxx@xx.com // xxx为配置的邮

    2024年02月07日
    浏览(40)
  • Linux下配置Git的SSH秘钥

    第一步:安装git环境 $ apt-get install libcurl4-gnutls-dev libexpat1-dev gettext libz-dev libssl-dev 第二步:配置Git参数 第三步:生成秘钥 然后连按三次空格!! 第四步:查看秘钥并复制到git的web上 将以下内容全部复制到git的web上 大功告成!!

    2024年02月11日
    浏览(48)
  • 崭新电脑搭建Git的SSH - 设置 Git 的SSH秘钥 - 遇到的问题及解决办法

    配置使用ssh方式来提交和克隆代码。 大概可以分为一下几个步骤: 1)设置Git的user name和email:(如果是第一次的话) 2)检查是否已经有SSH Key。 3)生成密钥 4)添加密钥到ssh-agent (如果是第一次的话) 如果不清楚自己有设置用户名和账户的话,可以使用指令进行查询,如下:

    2023年04月17日
    浏览(38)
  • Git/Gitlab添加SSH秘钥与小乌龟配置

    目录 一、Git/Gitlab添加SSH秘钥 二、秘钥添加情况验证 三、小乌龟关联SSH (1)查找是生成sSh秘钥,显示文件夹不存在,可以生成秘钥。 指令:cd ~/.ssh (2)生成秘钥,需要填写git注册邮箱。 指令:ssh-keygen -t rsa -C \\\"xxx@163.com\\\" (3)输入秘钥文件存储路径,参考括号里的路径填写

    2023年04月26日
    浏览(39)
  • 使用Git克隆(clone)Gitee的代码到本地文件夹

    注意:不论是在项目的哪个文件夹下来拿HTTPs下载链接,都会直接clone整个项目到本地 然后摁下\\\"Enter\\\",代码就会被Git到本地仓库

    2024年02月22日
    浏览(54)
  • git秘钥过期 ERROR: Your SSH key has expired

    使用git命令时遇到Github 的 SSH Key秘钥过期,提示错误 ERROR: Your SSH key has expired 首先登录Github查看,头像-设置-SSH秘钥,发现确实过期了,接下来就是重新生成秘钥 直接在项目目录下执行命令 ssh-keygen -t rsa -C \\\"你的邮箱\\\" 生成即可 然后进入刚刚生成的目录,把秘钥粘贴出来,放

    2024年02月20日
    浏览(56)
  • WSL无法通过SSH从git拉取仓库代码

    在上一篇博客中,解决了无法从git拉取仓库到本地的问题,但是当时的办法并未完全解决这个问题,当时只能通过HTTPS协议拉取git仓库,下面介绍如何通过SSH从git拉取仓库,过程参考了这篇博客。 执行上面的命令后,会在命令窗输出公钥的信息,我的公钥是 SHA256:/V+VhNBWst//P

    2024年01月24日
    浏览(57)
  • git克隆和创建分支(根据指定分支克隆或创建)

    1.创建分支的方法可以根据需求灵活调整,如先clone(master),再根据远程分支创建本地分支 2.在pull(拉取)或push(推送)时,指定特定的远程分支 热情。 真正的教育不能没有热情关怀和洞察力。 ——苏霍姆林斯基

    2024年02月16日
    浏览(66)
  • mac下用git客户端生成ssh秘钥并配置到souretree进行使用

    一、使用git 生成 ssh 密钥 1、Mac 安装 git 客户端 打开终端,执行命令: 2、执行命令 3、检查是不是已经存在密钥 4、能进去说明已经存在,就删掉文件夹,重新创建 5、生成 SSH 密钥,执行以下命令,并连续 3次 Enter 键即可。 会在.ssh目录下生成 id_rsa 、 id_rsa.pub 两个文件私钥

    2024年02月16日
    浏览(86)
  • [教程]使用 Git 克隆指定分支

    Git 是我们开发过程中经常使用到的版本管理工具,在平常情况下我们从远程克隆的时候会将整个库克隆下来,这会包括整个版本库的历史提交记录和远程库里的所有分支。但在一些情况下,比如我们并不需要查看历史提交记录而只是希望能够获取到最新的代码;或者我们只希

    2024年02月03日
    浏览(62)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包