SSH密钥不适用于git push,除非最近登录



背景

我使用SiteGround来托管我的网站。我在SiteGround上为我的每个网站都设置了git repos。我使用SSH密钥进行身份验证。我只是把网站设置为我的遥控器之一,我也可以推。

问题

SSH密钥似乎会在一段时间后过期,除非我通过SSH登录。我还不能确定它需要多长时间才能到期。似乎还有几个星期。

程序

  1. 等待几周
  2. 对我的网站进行一些修改,提交并合并到main
  3. $ git push sitegroundRemote HEAD:master

然后我得到这个错误:

$ git push sitegroundRemote HEAD:master
<username>@subdomain.siteground.biz: Permission denied (publickey).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
  1. $ ssh sitename<--这是有效的。我现在登录到远程会话
  2. $ exit
  3. $ git push sitegroundRemote HEAD:master

现在它工作了。我可以在接下来的几天或几周里继续努力,而不必在中使用ssh

对于git来说,密钥似乎过期了,但没有登录到shell。登录到shell可以重新启用用于git目的的密钥。

其他信息

SSH配置

我的~/.ssh/config文件中的条目看起来像:

Host sitename
HostName sitename.com
User <user-name>
Port <port-number>
IdentityFile ~/.ssh/sitename.com

git配置

我的git配置文件中的条目看起来像:

[remote "sitegroundRemote"]
url = ssh://<user-name>@<subdomain>.siteground.biz:<port>/home/<user-name>/www/sitename.com/repos/repo.git
fetch = +refs/heads/*:refs/remotes/master/*

生成SSH密钥

为了生成SSH密钥,我做了以下操作:

  1. $ ssh-keygen
  2. 输入的位置、名称和密码(/Users/username/.ssh/sitename.com)
  3. $ ssh-add -K /Users/username/.ssh/sitename.com
  4. $ pbcopy < ~/.ssh/sitename.com.pub
  5. 将其粘贴到SiteGround的SSH密钥部分

所有这些都允许我只使用$ ssh sitename通过bash访问我的网站。所以关键是有效的。我没有使用任何-t选项来设置时间限制或其他任何东西。

问题

你知道我如何在不需要经常登录的情况下继续推送到SiteGround吗?

我应该补充一点,我确实联系了SiteGround的支持,答案基本上是";会话过期。对此我们无能为力;所以我希望这里有人有一些想法。

所以我希望这里有人有一些想法。

除了解决方法之外,可能没有任何明显的解决方案。

作为一种变通方法,您可以设置一个cron作业,该作业每天都会执行ssh sitename ls(单个命令和退出),以便";刷新";会议。

最新更新