Sim*_*one 2 ssh download git github curl
我想找到一种更简单的方法来从私有 GitHub 存储库获取文件。
我通过在 GitHub 上创建个人访问令牌来下载文件curl
,然后像这样使用它:
curl https://MY_TOKEN@raw.githubusercontent.com/accountName/repoName/branchName/fileName.txt
Run Code Online (Sandbox Code Playgroud)
这对我有用,但是我想知道是否有更简单的方法,也许使用 SSH?我不介意输入 SSH 密码,因为它似乎比创建访问令牌更方便。我已经可以在 GitHub 上成功验证:
$ ssh -T git@github.com
# Attempts to ssh to GitHub
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试使用curl
SSH URL 时,出现以下错误:
curl ssh://git@github.com:accountName/repoName/branchName/fileName.txt
curl: (3) URL using bad/illegal format or missing URL
Run Code Online (Sandbox Code Playgroud)
我尝试了本文中描述的其他一些方法,但无济于事。
有任何想法吗?
首先,curl 说“错误/非法格式”,因为您混合了 URL 样式和 rsh 样式地址格式。传统上,Git 接受两者git clone
,但只有后者:
在主机和路径 \xe2\x80\x93 之间放置一个 ,而在 URL 中,所有路径都以/
. 例如,rsh/scp 样式的地址git@github.com:foo/bar
将被写为 URL ssh://git@github.com/foo/bar
,就像 HTTP URL 一样。
SSH 本身并不是一个文件传输协议 \xe2\x80\x93 它更像是 TLS,可以承载各种文件传输协议,例如 SFTP 或 scp 或 rsync(很像 TLS 可以承载 HTTP)。为curl 提供一个ssh://
URL 是没有意义的1,但您可以给它一个sftp://
URL 以通过SFTP 检索文件。(请注意您链接的文章如何专门使用 SFTP。)
但是,GitHub 不提供 SFTP 访问;通过 SSH 连接到 GitHub 唯一允许的是 Git 协议。这不是你可以使用curl 访问的东西,只能使用git clone
.
因此,如果您必须使用 SSH,那么 GitHub 的唯一选择就是通过 Git 克隆存储库。(可以使用--depth=
或--filter=
选项来减少下载大小,但它最终仍然是整个存储库,而不仅仅是单个文件。)
1(Git 使用 ssh:// URL,但含义从上下文 \xe2\x80\x93 中很清楚,它是 Git 协议,但通过 SSH 进行隧道传输。Git 不使用 SFTP。)
\n 归档时间: |
|
查看次数: |
6782 次 |
最近记录: |