IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发工具 -> 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"

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

2.添加公钥到github

复制公钥内容到剪贴板

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

?找到 SSH and GPG keys ,点击进入

?点击添加

?

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

ssh -T git@github.com

?a.访问成功如下:

b.访问失败如下:

?访问失败,需要检查公钥文件是否添加到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

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

?

?重新添加私有执行

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

通过 .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_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_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

?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

?

  开发工具 最新文章
Postman接口测试之Mock快速入门
ASCII码空格替换查表_最全ASCII码对照表0-2
如何使用 ssh 建立 socks 代理
Typora配合PicGo阿里云图床配置
SoapUI、Jmeter、Postman三种接口测试工具的
github用相对路径显示图片_GitHub 中 readm
Windows编译g2o及其g2o viewer
解决jupyter notebook无法连接/ jupyter连接
Git恢复到之前版本
VScode常用快捷键
上一篇文章      下一篇文章      查看所有文章
加:2022-10-31 12:20:15  更:2022-10-31 12:20:50 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/28 3:18:10-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计