背景
我使用SiteGround来托管我的网站。我在SiteGround上为我的每个网站都设置了git repos。我使用SSH密钥进行身份验证。我只是把网站设置为我的遥控器之一,我也可以推。
问题
SSH密钥似乎会在一段时间后过期,除非我通过SSH登录。我还不能确定它需要多长时间才能到期。似乎还有几个星期。
程序
- 等待几周
- 对我的网站进行一些修改,提交并合并到
main
$ 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.
$ ssh sitename
<--这是有效的。我现在登录到远程会话$ exit
$ 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密钥,我做了以下操作:
$ ssh-keygen
- 输入的位置、名称和密码(
/Users/username/.ssh/sitename.com
) $ ssh-add -K /Users/username/.ssh/sitename.com
$ pbcopy < ~/.ssh/sitename.com.pub
- 将其粘贴到SiteGround的SSH密钥部分
所有这些都允许我只使用$ ssh sitename
通过bash访问我的网站。所以关键是有效的。我没有使用任何-t
选项来设置时间限制或其他任何东西。
问题
你知道我如何在不需要经常登录的情况下继续推送到SiteGround吗?
我应该补充一点,我确实联系了SiteGround的支持,答案基本上是";会话过期。对此我们无能为力;所以我希望这里有人有一些想法。
所以我希望这里有人有一些想法。
除了解决方法之外,可能没有任何明显的解决方案。
作为一种变通方法,您可以设置一个cron作业,该作业每天都会执行ssh sitename ls
(单个命令和退出),以便";刷新";会议。