我遇到了以下错误:
$ git push heroku master
Warning: Permanently added the RSA host key for IP address '50.19.85.132' to the list of known hosts.
! Your key with fingerprint b7:fd:15:25:02:8e:5f:06:4f:1c:af:f3:f0:c3:c2:65 is not authorized to access bitstarter.
我尝试添加密钥,但出现以下错误:
$ ssh-add ~/.ssh/id_rsa.pub
Could not open a connection to your authentication agent.
MsysGit或Cygwin
如果您使用的是Msysgit或Cygwin,您可以在SSH代理中找到一个很好的教程:Msysgit、Cygwin和bash:
将名为.bashrc的文件添加到主文件夹。打开文件并粘贴到:#!/bin/basheval`ssh代理-s`ssh添加这假设您的密钥位于传统的~/.ssh/id_rsa位置。如果不是,请在ssh-add命令后包含完整路径。添加到或创建包含内容的文件~/.ssh/configForwardAgent是在最初的教程中,ForwardAgent参数是Yes,但它是一个拼写错误。使用小写字母,否则会出现错误。重新启动Msysgit。它会要求您输入一次密码,就这样(直到您结束会话,或者您的ssh代理被终止)
Mac/OS X
如果您不想在每次打开终端时启动新的ssh代理,请查看Keychain。我现在使用的是Mac,所以我在Mac OS X上使用了带有zsh&keychain的ssh代理教程来设置它,但我相信谷歌搜索会有很多关于Windows的信息。
更新:Mac上更好的解决方案是将密钥添加到Mac OS钥匙链:
ssh-add -K ~/.ssh/id_rsa
就这么简单。
以下是我在使用PowerShell时提出的解决方案。
将以下函数添加到Microsoft.PowerShell_profile.ps1
function RunSsh($userIdentity ) {
$agent=ssh-agent
$position=$agent[0].IndexOf("=")
$ending=$agent[0].IndexOf(";")
$variableStartPosition=$agent[0].IndexOf("export")
$variableEndPosition=$agent[0].LastIndexOf(";")
$variableName=$agent[0].Substring($variableStartPosition+7,$variableEndPosition-$variableStartPosition-7)
[Environment]::SetEnvironmentVariable($variableName, $agent[0].Substring($position+1,$ending-$position-1))
$position=$agent[1].IndexOf("=")
$ending=$agent[1].IndexOf(";")
$variableStartPosition=$agent[1].IndexOf("export")
$variableEndPosition=$agent[1].LastIndexOf(";")
$variableName=$agent[1].Substring($variableStartPosition+7,$variableEndPosition-$variableStartPosition-7)
[Environment]::SetEnvironmentVariable($variableName, $agent[1].Substring($position+1,$ending-$position-1))
if($userIdentity.Length -eq 0) {
ssh-add
} else {
ssh-add $userIdentity
}
}
现在,您可以从命令行运行RunSsh,它使用~\.ssh文件夹中的标识文件,或者使用RunSsh C:\ssh\id_rsa传递标识文件,其中C:\ssh\ id_rsa是您的标识文件。
要实现这一点,您需要在路径环境变量中使用ssh-add和ssh-agent。
我在尝试下载Git存储库时出错:
无法打开与身份验证代理的连接。ssh添加退出代码2
要消除此错误,请执行以下操作:
使用无密码私钥时,既不需要ssh代理,也不需要ssh add。请参阅将私钥添加到docker文件中的ssh代理。
如果处理得当(使用后删除),无密码私钥不需要使系统不安全。也许这也有助于解决Heroku问题?
这个“把戏”什么时候最重要?在Dockerfile中!
我必须使用无密码私钥来获取Dockerfile以克隆Git存储库,因为在Dockerfile运行期间,无法在shell中输入密码。请参阅Dockerfile:clone repo with passwordless private key。错误:例如,“身份验证代理”或“read_passphrase:无法打开/dev/tty”。最近,还可以考虑使用部署令牌访问Git存储库,而无需手动输入密码。