这可能是一种非常不寻常的情况,但我想指定在本地计算机上执行shell(git)命令时要使用的私有SSH密钥。
基本上是这样的:
git clone git@github.com:TheUser/TheProject.git -key "/home/christoffer/ssh_keys/theuser"
或者更好(用Ruby):
with_key("/home/christoffer/ssh_keys/theuser") do
sh("git clone git@github.com:TheUser/TheProject.git")
end
我见过使用Net::SSH连接到远程服务器的示例,该服务器使用指定的私钥,但这是一个本地命令。有可能吗?
2021。如果你在Mac上。
假设你在aws上有一个ubuntu服务器,你通常会这样连接:
% ssh -i blah/yourkeypair.pem ubuntu@test.fattie.com
仅在终端中
% export GIT_SSH_COMMAND="ssh -i /Users/fattie/Desktop/blah/yourkeypair.pem"
在你完成之后。然后你可以自由地。。。
% git clone ubuntu@test.fattie.com:/home/ubuntu/teste.git
这会将服务器上的repo克隆到本地文件夹“teste”,
然后,在teste/执行通常的命令时,您可以自由地执行。。。
% git push origin master
等等
--
另请注意:https://stackoverflow.com/a/67287133/294884
至于在服务器上,似乎基本上
] git clone --bare the-actual-folder teste.git
然后在teste.git中
] git init --bare --shared
最快、最简单的方法是:
使用ssh克隆您的repo:
git-c core.sshCommand=“ssh-i~/.ssh/<your_key>”克隆git@github.com:<user>/<repo>.git
然后cd到克隆的repo中,然后:
git-config-core.shCommand'ssh-i~/.ssh/<your_key>'
要测试它是否工作:
git--git-dir=/path/to/repo/.git pull
所以你可能会想:为什么我在github中安装了.pub,而private在默认目录中之后,我创建的ssh密钥就不起作用了?
该文档为我们提供了一个澄清问题的命令:ssh-vTgit@github.com
输出显示了git查找的ssh密钥列表。因此,您可能希望使用这些名称之一创建密钥,或者使用上述过程来包含所需的密钥。
这里给出的大多数答案都没有解释最基本用法的细节。
在云中设置服务器(在本例中为linux服务器)后,您可以从终端使用ssh连接到该服务器。
从您的计算机中,将云服务提供商(如Azure、AWS等)提供给您的私钥dyson-ubuntu-vm.pem添加到本地计算机上的.ssh配置中,如下所示:
将.pem文件复制到/home/ssenyonjo/.ssh文件夹,然后打开/home/ssseyonjo/.shsh/config文件并添加以下条目:
Host 20.85.213.44
HostName 20.85.213.44
User Dyson
IdentityFile /home/ssenyonjo/.ssh/dyson-ubuntu-vm.pem
IdentitiesOnly yes
现在从您的终端访问云linux服务器,如下所示:
ssh Dyson@20.85.213.44
当这起作用时,在云服务器上创建一个git项目,如下所示:
Dyson@dyson-ubuntu-vm:~/projects$ git init --bare s2
现在回到您的本地计算机,克隆空存储库,如下所示:
ssenyonjo@ssenyonjo-pc:~/Projects/mastering-git$ git clone ssh://Dyson@20.85.213.44/home/Dyson/projects/s2
如果您看到类似以下的错误:致命:无法从远程存储库读取,这意味着您访问了错误的文件夹。确保已概述从根目录到创建的存储库的正确路径。
如果您不想设置配置文件,但想访问需要密钥的ssh服务器,可以使用以下命令:
GIT_SSH_COMMAND='ssh -i ~/Projects/aws/keys/aws_ubuntu.pem' git clone ssh://ubuntu@15.207.99.158/home/ubuntu/projects/mastering-git/rand
您可以导出命令以继续将其用于其他任务,如gitpush和gitpull
export GIT_SSH_COMMAND='ssh -i ~/Projects/aws/keys/aws_ubuntu.pem'
参见:https://stackoverflow.com/a/29754018/10030693