Fix known_hosts not working (#14) - #19
Conversation
Replace `~` with `/github/home` when used for a file path in the options of a git configuration. For some reason, git does not resolve it and ignores the errors (probably just defaults) when the files do not exist. Passing it `~/.ssh/id_rsa` was not an issue though as it is the default SSH PK file.
BEFORE MERGINGYou might want to put the resolution of |
Bug reported and PR to resolve: yesolutions/mirror-action#19
|
Probably the GIT_SSH_NO_VERIFY_HOST: "true"with: GIT_SSH_KNOWN_HOSTS: ${{ secrets.GIT_SSH_KNOWN_HOSTS }} |
| if [[ "${GIT_SSH_KNOWN_HOSTS}" != "" ]]; then | ||
| echo "${GIT_SSH_KNOWN_HOSTS}" > ~/.ssh/known_hosts | ||
| git config --global core.sshCommand "ssh -i ~/.ssh/id_rsa -o IdentitiesOnly=yes -o UserKnownHostsFile=~/.ssh/known_hosts" | ||
| git config --global core.sshCommand "ssh -i /github/home/.ssh/id_rsa -o IdentitiesOnly=yes -o UserKnownHostsFile=/github/home/.ssh/known_hosts" |
There was a problem hiding this comment.
👋 New user of the action here and running into this issue.
To simplify things, I would suggest not setting the -i and -o UserKnownHostsFile arguments at all. The action is already writing the key and known_hosts to the default locations, so the default settings should be sufficient.
| git config --global core.sshCommand "ssh -i /github/home/.ssh/id_rsa -o IdentitiesOnly=yes -o UserKnownHostsFile=/github/home/.ssh/known_hosts" | |
| git config --global core.sshCommand "ssh -o IdentitiesOnly=yes" |
Of course, to ignore host fingerprints, you will still set StrictHostKeyChecking below:
git config --global core.sshCommand "ssh -o IdentitiesOnly=yes -o StrictHostKeyChecking=no"
In both cases, you should be able to drop the -i and -o UserKnownHostsFile.
There was a problem hiding this comment.
Update: In addition, you don't need the -o IdentitiesOnly=yes option either. So, you'd only need to define core.sshCommand in the case where you want to ignore fingerprints.
There was a problem hiding this comment.
This is not true because the home directory is resolved differently by the ssh and by the shell.
In the shell the home directory is resolved to /github/home, by ssh it's resolved to /root.
|
Any update ? |
|
Ping @spyoungtech |
|
I just stumbled over this bug and bug-fix and it would be really great if this could be megred/resolved. |
…cotry is resolved diffrently closes: yesolutions#14 supersedeas: yesolutions#19 Details: In the shell ~ and the home dir are resolved to /github/home, but when ssh resolves the home directory it /root. This causes the default search paths to be wrong (/root/.ssh/known_hosts instead of /github/home/.ssh/known_hosts). The idenity file path is automatically expanded by the shell because it's an argument on it's own. But for the known_hosts file path this is not the case because the argument is an assignment, so the shell doesn't expand it
…cotry is resolved diffrently closes: yesolutions#14 supersedeas: yesolutions#19 Details: In the shell the home directory is resolved to `/github/home`, but when ssh resolves it, it resolves `/root`. This causes the default search paths to be wrong (`/root/.ssh/known_hosts` instead of `/github/home/.ssh/known_hosts`). The idenity file path is automatically expanded by the shell because it's an argument on it's own. But for the known_hosts file path this is not the case because the argument is an assignment, so the shell doesn't expand it
Use absolute path for git config options
Replace
~with/github/homewhen used for a file path in the options of a git configuration. For some reason, git does not resolve it and ignores the errors (probably just defaults too) as the files do not exist.Passing it
~/.ssh/id_rsawas not an issue though as it already is the default private key file ssh uses.Tested and approved
I temporarily published it to the actions marketplace in order to try it with my non-working workflow and it fixed it.