我在工作中使用我的项目,但是我想与他一起工作,因为我可以登录我的家用机器以与我的项目一起工作。
但是,在家中,我看到以下消息:
The authenticity of host 'github.com (ip)' can't be established.
RSA key fingerprint is SHA256:nThbg6kXUpJWGl7E1IGOCspRomTxdCARLviKw6E5SY8.
Are you sure you want to continue connecting (yes/no)?
我该如何克服它?
您应该
yes
'~/.ssh/known_hosts
文件。
最好的方法是避免任何MITM(中间人)攻击,将是(如下MAMSDS所评论),以首先验证GitHub的公钥(请参阅" Github的SSH键指纹")和,如果您找到了匹配项,然后您可以回答'是'。
示例:
ssh-keyscan -t ecdsa github.com 2>&1 |ssh-keygen -lf -
256 SHA256:uNiVztksCsDhcc0u9e8BujQXVUpKZIDTMczCvj3tD2s github.com (ECDSA)
之后,您可以使用GitHub SSH URL(前提
注意:SSH密钥生成应使用base64旧PEM格式(选项-m PEM
),而不是新的当前70个Chars Openssh。
请参阅"凭证中的私钥的正确格式":
ssh-keygen -m PEM -t rsa -P "" -f afile
那样,或者您可以切换到https url。
更新2023年3月:
GitHub更新了他们的RSA SSH主机键
大约在3月24日的05:00 UTC,出于大量的谨慎,我们替换了用于确保GitHub.com的GIT操作的RSA SSH主机密钥。
我们这样做是为了保护用户免受对手模仿Github或窃听SSH的GIT操作的机会。该密钥不授予对GitHub的基础架构或客户数据的访问权限。此更改仅影响使用RSA对SSH的GIT操作。
github.com和https git操作的网络流量不受影响。只有GitHub.com的RSA SSH键被替换。ECDA或ED25519用户不需要更改
如果您在通过SSH连接到GitHub.com时看到以下消息,请继续阅读。
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY! Someone could be eavesdropping on you right now (man-in-the-middle attack)! It is also possible that a host key has just been changed. The fingerprint for the RSA key sent by the remote host is SHA256:uNiVztksCsDhcc0u9e8BujQXVUpKZIDTMczCvj3tD2s. Please contact your system administrator. Add correct host key in ~/.ssh/known_hosts to get rid of this message. Host key for github.com has changed and you have requested strict > checking. Host key verification failed.
如果您看到上述消息,则需要通过运行此命令来删除旧键:
$ ssh-keygen -R github.com
或手动更新您的〜/.ssh/nownod_host文件以删除旧条目。
然后,您可以手动添加以下行以将新的RSA SSH公共密钥输入添加到
~/.ssh/known_hosts
文件:github.com ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCj7ndNxQowgcQnjshcLrqPEiiphnt+VTTvDP6mHBL9j1aNUkY4Ue1gvwnGLVlOhGeYrnZaMgRK6+PKCUXaDbC7qtbW8gIkhL7aGCsOr/C56SJMy/BCZfxd1nWzAOxSDPgVsmerOBYfNqltV9/hWCqBywINIR+5dIg6JTJ72pcEpEjcYgXkE2YEFXV1JHnsKgbLWNlhScqb2UmyRkQyytRLtL+38TGxkxCflmO+5Z8CSSNY7GidjMIZ7Q4zMjA2n1nGrlTDkzwDCsw+wqFPGQA179cnfGWOWRVruj16z6XyvxvjJwbz0wQZ75XK5tKSb7FNyeIEs4TT4jk+S4dhPeAUC5y+bDYirYgM4GC7uEnztnZyaVWQ7B381AK4Qdrwt51ZqExKbQpTUNn+EjqoTwvqNj4kqx5QUCI0ThS/YkOxJCXmPUWZbhjpCg56i+2aB6CmK2JGhn57K5mj0MNdBXA4/WnwH6XoPWJzK5Nyu2zB3nAZp+S5hpQs+p1vN1/wsjk=
或自动在
~/.ssh/known_hosts
中自动更新github.com的RSA SSH键,通过在终端中运行以下内容:$ ssh-keygen -R github.com $ curl -L https://api.github.com/meta | jq -r '.ssh_keys | .[]' | sed -e 's/^/github.com /' >> ~/.ssh/known_hosts
您可以通过确认您看到以下指纹:
来验证您的主机正在通过我们的新RSA SSH键连接SHA256:uNiVztksCsDhcc0u9e8BujQXVUpKZIDTMczCvj3tD2s
github操作用户可能会看到失败的工作流程,如果他们使用
actions/checkout
和ssh-key选项。
我们正在更新所有受支持的标签中的actions/checkout
操作,包括@v2
,@v3
和@main
。
如果将操作固定在提交SHA并使用SSH-KEY选项上,则需要更新工作流程。您可以在我们的官方文档中了解有关此过程的更多有关操作安全性硬化的过程。有关更多信息,请访问我们有关GitHub SSH公共密钥指纹的正式文档。
so:
我们采取了什么行动?
本周,我们发现GitHub.com的RSA SSH私钥在公共GitHub存储库中短暂暴露。
我们立即采取行动遏制暴露并开始调查以了解根本原因和影响。
。
我们现在已经完成了密钥替代品,用户将在接下来的三十分钟内看到变化传播。
一些用户可能已经注意到,新密钥是在准备此更改期间从02:30左右开始的。请注意,此问题不是任何GitHub系统或客户信息的妥协的结果。
取而代之的是,暴露是我们认为是私人信息的无意发布的结果。我们没有理由相信暴露的钥匙被滥用了,并出于谨慎而采取了这一行动。
如BK2204'sanswer所述:
OpenSSH的一些版本包括IP地址的主机密钥以及主机名。
这是无益的,因为IP地址可以随DNS而变化,但是主机名倾向于更稳定。完全删除旧密钥:
# linux
sed -i -e '/AAAAB3NzaC1yc2EAAAABIwAAAQEAq2A7hRGmdnm9tUDbO9IDSwBK6TbQa+PXYPCPy6rbTrTtw7PHkccKrpp0yVhp5HdEIcKr6pLlVDBfOLX9QUsyCOV0wzfjIJNlGEYsdlLJizHhbn2mUjvSAHQqZETYP81eFzLQNnPHt4EVVUh7VfDESU84KezmD5QlWpXLmvU31/yMf+Se8xhHTvKSCZIFImWwoG6mbUoWf9nzpIoaSjB+weqqUUmpaaasXVal72J+UX2B+2RPW3RcT0eOzQgqlJL3RKrTJvdsjE3JEAvGq3lGHSZXy28G3skua2SmVi/w4yCE6gbODqnTWlg7+wC604ydGXA8VJiS5ap43JXiUFFAaQ==/d' ~/.ssh/known_hosts
# MacOS
sed -i '' -e '/AAAAB3NzaC1yc2EAAAABIwAAAQEAq2A7hRGmdnm9tUDbO9IDSwBK6TbQa+PXYPCPy6rbTrTtw7PHkccKrpp0yVhp5HdEIcKr6pLlVDBfOLX9QUsyCOV0wzfjIJNlGEYsdlLJizHhbn2mUjvSAHQqZETYP81eFzLQNnPHt4EVVUh7VfDESU84KezmD5QlWpXLmvU31/yMf+Se8xhHTvKSCZIFImWwoG6mbUoWf9nzpIoaSjB+weqqUUmpaaasXVal72J+UX2B+2RPW3RcT0eOzQgqlJL3RKrTJvdsjE3JEAvGq3lGHSZXy28G3skua2SmVi/w4yCE6gbODqnTWlg7+wC604ydGXA8VJiS5ap43JXiUFFAaQ==/d' ~/.ssh/known_hosts
# Windows
sed -i -e "/AAAAB3NzaC1yc2EAAAABIwAAAQEAq2A7hRGmdnm9tUDbO9IDSwBK6TbQa+PXYPCPy6rbTrTtw7PHkccKrpp0yVhp5HdEIcKr6pLlVDBfOLX9QUsyCOV0wzfjIJNlGEYsdlLJizHhbn2mUjvSAHQqZETYP81eFzLQNnPHt4EVVUh7VfDESU84KezmD5QlWpXLmvU31/yMf+Se8xhHTvKSCZIFImWwoG6mbUoWf9nzpIoaSjB+weqqUUmpaaasXVal72J+UX2B+2RPW3RcT0eOzQgqlJL3RKrTJvdsjE3JEAvGq3lGHSZXy28G3skua2SmVi/w4yCE6gbODqnTWlg7+wC604ydGXA8VJiS5ap43JXiUFFAaQ==/d" %USERPROFILE%.sshknown_hosts
可以通过修改的%PATH%
完成:
set "GH=%ProgramFiles%Git"
set "PATH=%GH%bin;%GH%cmd;%GH%usrbin;%GH%mingw64bin;%GH%mingw64libexecgit-core;%PATH%"
要从known_hosts
文件中删除任何GitHub IP地址,请参见讨论50878:
对于任何遇到重复
ECDSA host key for 'github.com' differs from the key for the IP address / Offending key for IP
问题的人,您无法在known_hosts
中抓取IPS,因为您已经进行了散布条目,我创建了一个GIST列表,所有GitHub Git git ipv4地址(截至6月24日,16:33:22 UTC 2023),由https://api.github.com/meta中列出的CIDR生成:https://gist.github.com/a-abella/FB31A028943B804E8ADA6CDA4EFBE9B6
您可以循环循环并将其喂入
ssh-keygen -R
。
具有可选known_hosts
文件路径参数的脚本可在此处找到:https://gist.github.com/a-abella/9d6c91a56a892e4c7493333d17d380aa01。唯一的依赖性是curl
。如果您想要一个单线(尽管适用于Internet警告的标准,您应该不会放在脚本上):
curl -s https://gist.githubusercontent.com/a-abella/9d6c91a56a892e4c74933d17d380aa01/raw/0bcaef131f94e4938cb659d744c3019fd814643e/strip_github.sh | bash -s -- $HOME/.ssh/known_hosts
尝试首次使用SSH连接到GitHub(尚无~/.ssh/known_hosts
中的GitHub的现有条目),您被要求验证远程主机的键指纹。因为,如果入侵者主机将自己表示为GitHub服务器,则它的RSA指纹与GitHub Server指纹不同。
您有两个选择。
-
您可能会接受,考虑到您不在乎远程主机的真实性(在这种情况下为GitHub)或,
-
您可以通过将您与github的SSH键指纹匹配
。base64
格式中的RSA指纹匹配,实际上可以验证您实际上已连接到GitHub服务器。
通常更可取。
mkdir -p ~/.ssh
ssh-keyscan -t rsa github.com >> ~/.ssh/known_hosts
使用以下两个解决方案之一:
1)设置SSH键
按照此GitHub帮助页面上讨论的步骤。
https://help.github.com/en/github/authenticating-to-github/connecting-to-github-with-with-ssh
2)使用https
使用git克隆type(复制/粘贴)在计算机上的终端中以下命令,您想克隆存储库
git config --global url."https://github.com/".insteadOf git@github.com:
git config --global url."https://".insteadOf git://
您可以使用以下命令
还原此更改git config --global url."git@github.com:".insteadOf https://github.com/
git config --global url."git://".insteadOf https://
尝试以下步骤:
打开git bash
检查现有的SSH键:
$ ls -al ~/.ssh
如果您已经拥有它们,您会看到:
- id_rsa.pub
- id_ecdsa.pub
- id_ed25519.pub
如果不这样做,请生成一个(按Enter接受默认文件位置):
$ ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
将键复制到剪贴板:
$ clip < ~/.ssh/id_rsa.pub
转到您的帐户/setings/ssh和gpg键/新ssh键
在那里粘贴钥匙
接下来,类型:
$ git remote
如果您看到原点,请删除它:
$ git remote remove origin
继续进行GitHub回购页面上提供的最后2个步骤...
$ git remote add origin git@github.com:USERNAME/REPONAME.git
$ git push -u origin master
刷新您的github回购页
voila!
1-创建ssh键
如果您没有这样的ssh-key创建它:
ssh-keygen -t rsa -b 4096 -C "youremail@example.com"
2-检查您的SSH键
为此,转到您的文件夹SSH,示例:
cd ~/.ssh
之后,运行此命令行:ls
如果您有文件: ID_RSA , id_rsa.pub ,那么一切都是好
现在您需要复制 id_rsa.pub !(⚠️不是ID_RSA )对于此运行cat id_rsa.pub
并复制结果
3- github/gitlab
转到您的github/gitlab。
遵循您的托管:
- github :单击您的配置文件 - &gt;设置 - &gt; SSH和GPG密钥 - &gt;新的SSH键
- gitlab :单击您的配置文件 - &gt;首选项 - &gt; SSH键
- 过去的 id_rsa.pub 您已经复制了!
4-如果您已经这样做并且已经无法正常工作?
当您在github/gitlab中输入ssh-key时,您的键具有到期日期,因此您只需要更改
那!做得很好😀
您只需要键入yes
即可使用,它将起作用,有关更多信息,您可以参考官方的GitHub文档。这将给出一个输出
Hi <username>! You've successfully authenticated, but GitHub does not provide shell access.
这是对我工作的原因
ssh-keyscan github.com >> ~/.ssh/known_hosts