在R中管理SSH和Git凭据

这个资格证书包中包含用于配置的工具和检索SSH和HTTPS凭据以与一起使用吉特或其他服务。它帮助用户设置他们的git安装,以及还为包提供后端,以便与现有用户进行身份验证资格证书。

两种遥控器

图书馆(凭据)
##找到git版本2.41.0##支持的HTTPS凭据帮助程序:缓存、存储##找到OpenSSH_9.0p1,LibreSSL 3.3.6##默认SSH密钥:/Users/jeroen/.SSH/id_ed25519

Git支持两种类型的远程:SSH和HTTPS。这两种用途完全不同的身份验证系统。

SSH远程 HTTPS远程
网址 git@server.com https://server.com
身份验证 个人SSH密钥 密码或PAT
存储在 文件标识_ rsassh-代理 git凭证商店

对于HTTPS远程,git使用用户名+密码进行身份验证。使用GitHub,您也可以使用个人访问令牌(PAT)。首选PAT,因为它们可以提供更精细的控制权限(通过PAT的作用域),您可以为不同的用途,你可以给它们起信息性的名字,它们可以选择性撤销。注意,如果在GitHub中使用2FA,则必须如果使用HTTPS协议,请使用PAT进行身份验证。

对于SSH远程服务器,git会发送到ssh公司在您的系统上,让我们ssh公司注意身份验证。这意味着你必须设置ssh密钥(通常~/.ssh/id_rsa)哪个是你然后添加到您的git轮廓.

Windows特别说明

Windows不包括本机吉特安装方式违约。我们建议使用最新版本的Windows Git.此捆绑包还包括ssh公司吉特windows的凭据管理器这就是你所需要的。

重要提示:ssh密钥存储在主目录中,例如:C: \用户\Jeroen\.ssh\id_rsa、和不在中文档文件夹(R将其视为家有时)。这个ssh_home()函数显示正确的.ssh文件目录。

第1部分:存储HTTPS凭据

HTTPS远程并不总是需要身份验证。你可以克隆不提供任何凭据。但为了推送或私有存储库,吉特将提示输入用户名/密码。

git克隆https://github.com/jeroen/jsonlite

为了避免反复输入密码,git包含了一个凭据助手.它有两种模式:

要查看为给定的回购配置了哪个助手,请运行:

凭证助手获取()
##[1]“osxkeychain”

大多数吉特安装默认为商店如果支持,因为它更方便、更安全。然而,外观和用于输入和检索密码的git凭证存储策略可以因系统而异,因为它使用操作系统本机密码管理器。

从R访问HTTPS凭据存储

这个资格证书R包为git凭证用于读取和保存的命令行API资格证书。这个git_credential_ask()函数查找来自存储区的给定URL的合适凭据。如果没有凭据可用时,它将尝试提示用户输入凭据和而是退回那些。

图书馆(凭据)
git_credential_ask('https://example.com')
##$协议##[1]“https”## ##$主机##[1]“example.com”## ##$用户名##[1]“杰伦”## ##$密码##[1]“超级副本”## ##attr(,“类”)##[1]“git_credential”

功能git_credential_update()看起来很相似,但它的行为略有不同:它首先删除现有凭据然后提示用户输入新的用户名/密码,并将其保存到商店中。

#这应始终提示输入新凭据
git_credential更新('https://example.com')

在终端窗口中,这将产生交互式密码提示。在Windows中,用户可能会看到这样的内容(取决于Windows和git配置的版本):

设置GITHUB_PAT

自动填充您的GITHUB_PAT公司环境变量。凭证管理器将在需要时安全地提示用户输入凭据。

资格证书::设置github_pat()
##使用Jeroen Ooms的GITHUB_PAT(凭证助手:osxkeychain)

在您的.R配置文件如果你想的话自动设置GITHUB_PAT公司对于每个R会话,没有将秘密硬编码为纯文本,例如Renviron公司文件。

非交互式使用

检索凭据根据定义是交互式的,因为用户可能需要输入密码或解锁系统钥匙链。但是,有时可以保存或删除凭据非交互式,但这取决于哪个凭据助手已使用。

的手册页凭证_批准凭证_拒绝提供了有关如何调用基本的git凭证api。

第2部分:管理SSH密钥

对于SSH远程,git本身不处理身份验证。吉特只需向ssh公司并使用您的标准用户ssh配置。因此使用SSH git进行身份验证远程操作可以归结为设置ssh密钥,并将这些密钥复制到您的轮廓。

这个资格证书包提供了一些实用程序功能让这更容易。这个ssh_key_info()函数调用查找哪个键ssh公司用于连接到给定服务器。这通常是~/.ssh/id_rsa除非你有兴趣自定义ssh配置。

ssh_密钥信息()
##$键##[1]“/Users/jeroen/.ssh/id_ed25519”## ##$pubkey(美元)##[1]“ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAILGN+5tybmwKhcxvnwPSKlrp39Ni1gMD0UhV4gCxHg/x…”

输出显示了(私有)密钥的路径以及ssh pubkey字符串。后者是您必须在GitHub配置文件将此密钥与您的用户帐户相关联。然后你就会使用GitHub SSH远程时自动进行身份验证。

生成密钥

要使用SSH,您需要一个个人密钥,它通常存储在~/.ssh/id_rsa。如果您还没有密钥ssh_key_info()函数将自动询问您是否需要生成一个。

您还可以使用ssh_keygen()功能。