我有一个 SSH 密钥,可以让我推送到某个存储库。密钥本身没有问题 - 但是,我不想将密钥复制到.ssh
文件夹或将 SSH 密钥保留在 ssh-agent 中(在其他计算机上),而是希望有一个可移植的脚本解决方案。
-i
所以我正在寻找与连接时如何指定身份的等效方法ssh
:
ssh -i /my/individual/path/id_rsa user@server
另外,例如,使用 GitHub 上的 HTTPS,我可以在线生成令牌,然后执行以下操作:
git remote add origin "https://[email protected]/USER/REPO.git"
是否有类似的 SSH 密钥,以便我可以直接在 git 中使用它们?
答案1
是的...您可以使用 ~/.ssh/config 而不是 ssh-agent
只需将其添加到~/.ssh/config
文件中
Host github.com
IdentityFile /my/individual/path/id_rsa
答案2
这GIT_SSH_COMMAND
环境变量可用于更改 Git 将使用的 SSH 命令:
GIT_SSH_COMMAND="ssh -i /path/to/your/id_rsa" git clone git@whatever
或者,有core.sshCommand
设置为git config
:
git config core.sshCommand "ssh -i /path/to/your/id_rsa"
您还可以使用相对路径。因此,如果您将id_rsa
密钥保留在存储库根文件夹的父文件夹中,则以下配置将使git
命令使用该密钥 - 无论哪个存储库文件夹是当前工作目录:
git config core.sshCommand "ssh -i ../id_rsa"
笔记:您还应该添加-F /dev/null
这些命令以防止本地 ssh 配置/etc/ssh/ssh_config
被~/.ssh/config
读取。例如,它们可能包含AddKeysToAgent yes
自动将密钥添加到ssh-agent
.