不再支持端口 9418 上未经身份验证的 git 协议
The unauthenticated git protocol on port 9418 is no longer supported
我使用 github 操作已经有一段时间了,但今天我的部署开始失败。以下是来自 github 操作日志
的错误
Command: git
Arguments: ls-remote --tags --heads git://github.com/adobe-webplatform/eve.git
Directory: /home/runner/work/stackstream-fe/stackstream-fe
Output:
fatal: remote error:
The unauthenticated git protocol on port 9418 is no longer supported.
经调查,我的 yml 文件中的以下部分似乎导致了问题。
- name: Installing modules
run: yarn install
我已经调查了 this change log 但似乎无法理解这个问题。
其他详细信息:
服务器:EC2 实例
Github 操作步骤:
steps:
- name: Checkout
uses: actions/checkout@v2
- id: vars
run: |
if [ '${{ github.ref }}' == 'refs/heads/master' ]; then echo "::set-output name=environment::prod_stackstream" ; echo "::set-output name=api-url::api" ; elif [ '${{ github.ref }}' == 'refs/heads/staging' ]; then echo "::set-output name=environment::staging_stackstream" ; echo "::set-output name=api-url::stagingapi" ; else echo "::set-output name=environment::dev_stackstream" ; echo "::set-output name=api-url::devapi" ; fi
- uses: pCYSl5EDgo/cat@master
id: slack
with:
path: .github/workflows/slack.txt
- name: Slack Start Notification
uses: 8398a7/action-slack@v3
env:
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}
ENVIRONMENT: '`${{ steps.vars.outputs.environment }}`'
COLOR: good
STATUS: '`Started`'
with:
status: custom
fields: workflow,job,commit,repo,ref,author,took
custom_payload: |
${{ steps.slack.outputs.text }}
- name: Installing modules
env:
REACT_APP_API_URL: 'https://${{ steps.vars.outputs.api-url }}mergestack.com/api/v1'
run: yarn install
- name: Create Frontend Build
env:
REACT_APP_API_URL: 'https://${{ steps.vars.outputs.api-url }}mergestack.com/api/v1'
run: yarn build
- name: Deploy to Frontend Server DEV
if: ${{ contains(github.ref, 'dev') }}
uses: easingthemes/ssh-deploy@v2.1.5
env:
SSH_PRIVATE_KEY: ${{ secrets.DEV_KEY }}
ARGS: '-rltgoDzvO --delete'
SOURCE: 'deploy/'
REMOTE_HOST: ${{ secrets.DEV_HOST }}
REMOTE_USER: plyfolio-dev
TARGET: '/home/plyfolio-dev/${{ steps.vars.outputs.environment }}/fe/deploy'
package.json 文件
{
"name": "stackstream-fe",
"version": "1.0.0",
"authors": [
"fayyaznofal@gmail.com"
],
"private": true,
"dependencies": {
"@fortawesome/fontawesome-svg-core": "^1.2.34",
"@fortawesome/free-solid-svg-icons": "^5.15.2",
"@fortawesome/react-fontawesome": "^0.1.14",
"@fullcalendar/bootstrap": "^5.5.0",
"@fullcalendar/core": "^5.5.0",
"@fullcalendar/daygrid": "^5.5.0",
"@fullcalendar/interaction": "^5.5.0",
"@fullcalendar/react": "^5.5.0",
"@lourenci/react-kanban": "^2.1.0",
"@redux-saga/simple-saga-monitor": "^1.1.2",
"@testing-library/jest-dom": "^5.11.9",
"@testing-library/react": "^11.2.3",
"@testing-library/user-event": "^12.6.0",
"@toast-ui/react-chart": "^1.0.2",
"@types/jest": "^26.0.14",
"@types/node": "^14.10.3",
"@types/react": "^16.9.49",
"@types/react-dom": "^16.9.8",
"@vtaits/react-color-picker": "^0.1.1",
"apexcharts": "^3.23.1",
"availity-reactstrap-validation": "^2.7.0",
"axios": "^0.21.1",
"axios-mock-adapter": "^1.19.0",
"axios-progress-bar": "^1.2.0",
"bootstrap": "^5.0.0-beta2",
"chart.js": "^2.9.4",
"chartist": "^0.11.4",
"classnames": "^2.2.6",
"components": "^0.1.0",
"dotenv": "^8.2.0",
"draft-js": "^0.11.7",
"echarts": "^4.9.0",
"echarts-for-react": "^2.0.16",
"firebase": "^8.2.3",
"google-maps-react": "^2.0.6",
"history": "^4.10.1",
"i": "^0.3.6",
"i18next": "^19.8.4",
"i18next-browser-languagedetector": "^6.0.1",
"jsonwebtoken": "^8.5.1",
"leaflet": "^1.7.1",
"lodash": "^4.17.21",
"lodash.clonedeep": "^4.5.0",
"lodash.get": "^4.4.2",
"metismenujs": "^1.2.1",
"mkdirp": "^1.0.4",
"moment": "2.29.1",
"moment-timezone": "^0.5.32",
"nouislider-react": "^3.3.9",
"npm": "^7.6.3",
"prop-types": "^15.7.2",
"query-string": "^6.14.0",
"react": "^16.13.1",
"react-apexcharts": "^1.3.7",
"react-auth-code-input": "^1.0.0",
"react-avatar": "^3.10.0",
"react-bootstrap": "^1.5.0",
"react-bootstrap-editable": "^0.8.2",
"react-bootstrap-sweetalert": "^5.2.0",
"react-bootstrap-table-next": "^4.0.3",
"react-bootstrap-table2-editor": "^1.4.0",
"react-bootstrap-table2-paginator": "^2.1.2",
"react-bootstrap-table2-toolkit": "^2.1.3",
"react-chartist": "^0.14.3",
"react-chartjs-2": "^2.11.1",
"react-color": "^2.19.3",
"react-confirm-alert": "^2.7.0",
"react-content-loader": "^6.0.1",
"react-countdown": "^2.3.1",
"react-countup": "^4.3.3",
"react-cropper": "^2.1.4",
"react-data-table-component": "^6.11.8",
"react-date-picker": "^8.0.6",
"react-datepicker": "^3.4.1",
"react-dom": "^16.13.1",
"react-draft-wysiwyg": "^1.14.5",
"react-drag-listview": "^0.1.8",
"react-drawer": "^1.3.4",
"react-dropzone": "^11.2.4",
"react-dual-listbox": "^2.0.0",
"react-facebook-login": "^4.1.1",
"react-flatpickr": "^3.10.6",
"react-google-login": "^5.2.2",
"react-hook-form": "^7.15.2",
"react-i18next": "^11.8.5",
"react-icons": "^4.2.0",
"react-image-lightbox": "^5.1.1",
"react-input-mask": "^2.0.4",
"react-jvectormap": "^0.0.16",
"react-leaflet": "^3.0.5",
"react-meta-tags": "^1.0.1",
"react-modal-video": "^1.2.6",
"react-notifications": "^1.7.2",
"react-number-format": "^4.7.3",
"react-perfect-scrollbar": "^1.5.8",
"react-rangeslider": "^2.2.0",
"react-rating": "^2.0.5",
"react-rating-tooltip": "^1.1.6",
"react-redux": "^7.2.1",
"react-responsive-carousel": "^3.2.11",
"react-router-dom": "^5.2.0",
"react-script": "^2.0.5",
"react-scripts": "3.4.3",
"react-select": "^4.3.1",
"react-sparklines": "^1.7.0",
"react-star-ratings": "^2.3.0",
"react-super-responsive-table": "^5.2.0",
"react-switch": "^6.0.0",
"react-table": "^7.6.3",
"react-toastify": "^7.0.3",
"react-toastr": "^3.0.0",
"react-twitter-auth": "0.0.13",
"reactstrap": "^8.8.1",
"recharts": "^2.0.8",
"redux": "^4.0.5",
"redux-saga": "^1.1.3",
"reselect": "^4.0.0",
"sass": "^1.37.5",
"simplebar-react": "^2.3.0",
"styled": "^1.0.0",
"styled-components": "^5.2.1",
"toastr": "^2.1.4",
"typescript": "^4.0.2",
"universal-cookie": "^4.0.4"
},
"devDependencies": {
"@typescript-eslint/eslint-plugin": "^2.27.0",
"@typescript-eslint/parser": "^2.27.0",
"@typescript-eslint/typescript-estree": "^4.15.2",
"eslint-config-prettier": "^6.10.1",
"eslint-plugin-prettier": "^3.1.2",
"husky": "^4.2.5",
"lint-staged": "^10.1.3",
"prettier": "^1.19.1",
"react-test-renderer": "^16.13.1",
"redux-devtools-extension": "^2.13.8",
"redux-mock-store": "^1.5.4"
},
"scripts": {
"start": "react-scripts start",
"build": "react-scripts build && mv build ./deploy/build",
"build-local": "react-scripts build",
"test": "react-scripts test",
"eject": "react-scripts eject"
},
"eslintConfig": {
"extends": "react-app"
},
"husky": {
"hooks": {
"pre-commit": "lint-staged"
}
},
"lint-staged": {
"*.{js,ts,tsx}": [
"eslint --fix"
]
},
"browserslist": {
"production": [
">0.2%",
"not dead",
"not op_mini all"
],
"development": [
"last 1 chrome version",
"last 1 firefox version",
"last 1 safari version"
]
}
}
首先,这个报错信息确实预计在2022年1月11日。
参见“Improving Git protocol security on GitHub”。
January 11, 2022 Final brownout.
This is the full brownout period where we’ll temporarily stop accepting the deprecated key and signature types, ciphers, and MACs, and the unencrypted Git protocol.
This will help clients discover any lingering use of older keys or old URLs.
其次,检查您的 package.json
依赖项是否有任何 git://
URL,如 this example, fixed in this PR.
作为 by Jörg W Mittag:
There was a 4-month warning.
The entire Internet has been moving away from unauthenticated, unencrypted protocols for a decade, it's not like this is a huge surprise.
Personally, I consider it less an "issue" and more "detecting unmaintained dependencies".
Plus, this is still only the brownout period, so the protocol will only be disabled for a short period of time, allowing developers to discover the problem.
The permanent shutdown is not until March 15th.
对于Git集线器操作:
与 actions/checkout issue 14 一样,您可以在第一步添加:
- name: Fix up git URLs
run: echo -e '[url "https://github.com/"]\n insteadOf = "git://github.com/"' >> ~/.gitconfig
这会将任何 git://github.com/
更改为 https://github.com/
。
对于本地项目
对于您的所有存储库,您可以设置:
git config --global url."https://github.com/".insteadOf git://github.com/
您也可以使用 SSH,但 GitHub Security 提醒我们,自 2022 年 3 月 15 日起,GitHub 停止接受 DSA 密钥。 2021 年 11 月 2 日之后上传的 RSA 密钥仅适用于 SHA-2 签名。
已弃用的 MAC、密码和未加密的 Git 协议将永久禁用。
所以这个(使用右键)会起作用:
git config --global url."git@github.com:".insteadOf git://github.com/
这会将任何 git://github.com/
(未加密的 Git 协议)更改为 git@github.com:
(SSH URL)。
@toast-ui/react-chart 依赖性给您带来了问题。
如果你仔细观察你的包裹-lock.json 你可以回溯 eve 到 @toast-ui/react-chart
eve --> raphael --> tui-chart --> @toast-ui/react-chart
您可以按照同样的方法在您的项目中查找更多问题。
安装前尝试使用以下命令:
git config --global url."https://".insteadOf git://
P.S。或更好(感谢@bgraves)
git config --global url."https://github.com/".insteadOf git://github.com/
尝试使用 https://github.com 而不是 git://github.com
在存储库的 .git/config 文件中将 git://github.com/<blah>
更改为 git@github.com:<blah>
(注意最后的 /
→ :
)。
在我存储库的 .git/config 文件中我有这一行
[remote "upstream"]
url = git://github.com/curlconverter/curlconverter.git
fetch = +refs/heads/*:refs/remotes/upstream/*
我改成了
[remote "upstream"]
url = git@github.com:curlconverter/curlconverter.git
fetch = +refs/heads/*:refs/remotes/upstream/*
并停止收到此错误。
I hope this answer would provide more context omitted in the other answers.
Git可以使用four protocols传输数据:
- 本地(此处不相关)
- (智能)HTTP - 运行通过标准 HTTPS 端口,并且可以使用各种 HTTP 身份验证机制(例如 username/password)如果需要身份验证 .该协议允许您使用相同的 URL 提供读写访问权限;如果需要认证,服务器会提示客户端。
- 安全 Shell (SSH) - 已验证读取和写入的经过验证的工作流程。它不支持未经身份验证(即匿名)的访问。用户需要在本地生成 SSH 密钥对(包含私钥和 public 密钥)并将他们的 public 密钥上传到服务器。
- Git 协议 - 未加密和未验证。 Git 服务器上 运行 有一个 Git Daemon,它侦听端口
9418
和服务请求。
每个协议使用不同的 URLs:
- 本地:
- 绝对路径(例如
/srv/git/project.git
)
- 以
file://
协议为前缀的绝对路径(例如file:///srv/git/project.git
)
- HTTP:
https://example.com/gitproject.git
- SSH
ssh://[user@]server/project.git
- 更短的 SCP-like 语法 -
[user@]server:project.git
- Git 协议 - 以
git://
开头
GitHub 有 dropped support for all unencrypted protocols,它只包含 Git 协议(那些使用 git://
前缀的协议)。因此,The unauthenticated git protocol on port 9418 is no longer supported.
错误证实了这一点。
减轻这种情况的方法是在您的 package.json
和锁定文件(例如 yarn.lock
或 package-lock.json
)中搜索字符串 git://
来识别有问题的包( s),并将它们升级到不使用解析为带有 git://
前缀的 URL 的依赖项的版本。如果有问题的包不在您的 package.json
中,您可能会发现 运行 像 yarn why
这样的命令有助于理解安装包的原因。
如果那不可能,并且存储库是 public,一个临时解决方案是手动将 git://
替换为 https://
。但是这个解决方案不是永久性的,下次写入锁定文件时可能会被覆盖。
如果您在 运行 类似 pip install git+git://github.com/SomeCompany/somerepo.git@sometag
时遇到此问题,则只有 git+git
的第二部分需要更改,即变为 pip install git+https://github.com/SomeCompany/somerepo.git@sometag
当所有其他解决方案都不起作用时,请尝试编辑您的全局配置并删除所有 instead of
声明。
git config --global --edit
您好,请尝试以下选项 - 这个对我有用
git config --global url."https://github".insteadOf git://github
现在 git 集线器不支持未验证的 git 协议
https://github.blog/2021-09-01-improving-git-protocol-security-github/
我遇到以下错误
Unhandled rejection Error: Command failed: /usr/bin/git submodule update -q --init --recursive
warning: templates not found /tmp/pacote-git-template-tmp/git-clone-a001527f
fatal: remote error:
The unauthenticated git protocol on port 9418 is no longer supported.
Please see https://github.blog/2021-09-01-improving-git-protocol-security-github/ for more information.
fatal: clone of 'git://github.com/jquery/sizzle.git' into submodule path '/root/.npm/_cacache/tmp/git-clone-19674e32/src/sizzle' failed
Failed to clone 'src/sizzle'. Retry scheduled
warning: templates not found /tmp/pacote-git-template-tmp/git-clone-a001527f
将代码添加到 ~/.gitconfig:
[url "https://"]
insteadOf = ssh://
[url "https://"]
insteadOf = git://
我使用 github 操作已经有一段时间了,但今天我的部署开始失败。以下是来自 github 操作日志
的错误Command: git
Arguments: ls-remote --tags --heads git://github.com/adobe-webplatform/eve.git
Directory: /home/runner/work/stackstream-fe/stackstream-fe
Output:
fatal: remote error:
The unauthenticated git protocol on port 9418 is no longer supported.
经调查,我的 yml 文件中的以下部分似乎导致了问题。
- name: Installing modules
run: yarn install
我已经调查了 this change log 但似乎无法理解这个问题。
其他详细信息: 服务器:EC2 实例 Github 操作步骤:
steps:
- name: Checkout
uses: actions/checkout@v2
- id: vars
run: |
if [ '${{ github.ref }}' == 'refs/heads/master' ]; then echo "::set-output name=environment::prod_stackstream" ; echo "::set-output name=api-url::api" ; elif [ '${{ github.ref }}' == 'refs/heads/staging' ]; then echo "::set-output name=environment::staging_stackstream" ; echo "::set-output name=api-url::stagingapi" ; else echo "::set-output name=environment::dev_stackstream" ; echo "::set-output name=api-url::devapi" ; fi
- uses: pCYSl5EDgo/cat@master
id: slack
with:
path: .github/workflows/slack.txt
- name: Slack Start Notification
uses: 8398a7/action-slack@v3
env:
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}
ENVIRONMENT: '`${{ steps.vars.outputs.environment }}`'
COLOR: good
STATUS: '`Started`'
with:
status: custom
fields: workflow,job,commit,repo,ref,author,took
custom_payload: |
${{ steps.slack.outputs.text }}
- name: Installing modules
env:
REACT_APP_API_URL: 'https://${{ steps.vars.outputs.api-url }}mergestack.com/api/v1'
run: yarn install
- name: Create Frontend Build
env:
REACT_APP_API_URL: 'https://${{ steps.vars.outputs.api-url }}mergestack.com/api/v1'
run: yarn build
- name: Deploy to Frontend Server DEV
if: ${{ contains(github.ref, 'dev') }}
uses: easingthemes/ssh-deploy@v2.1.5
env:
SSH_PRIVATE_KEY: ${{ secrets.DEV_KEY }}
ARGS: '-rltgoDzvO --delete'
SOURCE: 'deploy/'
REMOTE_HOST: ${{ secrets.DEV_HOST }}
REMOTE_USER: plyfolio-dev
TARGET: '/home/plyfolio-dev/${{ steps.vars.outputs.environment }}/fe/deploy'
package.json 文件
{
"name": "stackstream-fe",
"version": "1.0.0",
"authors": [
"fayyaznofal@gmail.com"
],
"private": true,
"dependencies": {
"@fortawesome/fontawesome-svg-core": "^1.2.34",
"@fortawesome/free-solid-svg-icons": "^5.15.2",
"@fortawesome/react-fontawesome": "^0.1.14",
"@fullcalendar/bootstrap": "^5.5.0",
"@fullcalendar/core": "^5.5.0",
"@fullcalendar/daygrid": "^5.5.0",
"@fullcalendar/interaction": "^5.5.0",
"@fullcalendar/react": "^5.5.0",
"@lourenci/react-kanban": "^2.1.0",
"@redux-saga/simple-saga-monitor": "^1.1.2",
"@testing-library/jest-dom": "^5.11.9",
"@testing-library/react": "^11.2.3",
"@testing-library/user-event": "^12.6.0",
"@toast-ui/react-chart": "^1.0.2",
"@types/jest": "^26.0.14",
"@types/node": "^14.10.3",
"@types/react": "^16.9.49",
"@types/react-dom": "^16.9.8",
"@vtaits/react-color-picker": "^0.1.1",
"apexcharts": "^3.23.1",
"availity-reactstrap-validation": "^2.7.0",
"axios": "^0.21.1",
"axios-mock-adapter": "^1.19.0",
"axios-progress-bar": "^1.2.0",
"bootstrap": "^5.0.0-beta2",
"chart.js": "^2.9.4",
"chartist": "^0.11.4",
"classnames": "^2.2.6",
"components": "^0.1.0",
"dotenv": "^8.2.0",
"draft-js": "^0.11.7",
"echarts": "^4.9.0",
"echarts-for-react": "^2.0.16",
"firebase": "^8.2.3",
"google-maps-react": "^2.0.6",
"history": "^4.10.1",
"i": "^0.3.6",
"i18next": "^19.8.4",
"i18next-browser-languagedetector": "^6.0.1",
"jsonwebtoken": "^8.5.1",
"leaflet": "^1.7.1",
"lodash": "^4.17.21",
"lodash.clonedeep": "^4.5.0",
"lodash.get": "^4.4.2",
"metismenujs": "^1.2.1",
"mkdirp": "^1.0.4",
"moment": "2.29.1",
"moment-timezone": "^0.5.32",
"nouislider-react": "^3.3.9",
"npm": "^7.6.3",
"prop-types": "^15.7.2",
"query-string": "^6.14.0",
"react": "^16.13.1",
"react-apexcharts": "^1.3.7",
"react-auth-code-input": "^1.0.0",
"react-avatar": "^3.10.0",
"react-bootstrap": "^1.5.0",
"react-bootstrap-editable": "^0.8.2",
"react-bootstrap-sweetalert": "^5.2.0",
"react-bootstrap-table-next": "^4.0.3",
"react-bootstrap-table2-editor": "^1.4.0",
"react-bootstrap-table2-paginator": "^2.1.2",
"react-bootstrap-table2-toolkit": "^2.1.3",
"react-chartist": "^0.14.3",
"react-chartjs-2": "^2.11.1",
"react-color": "^2.19.3",
"react-confirm-alert": "^2.7.0",
"react-content-loader": "^6.0.1",
"react-countdown": "^2.3.1",
"react-countup": "^4.3.3",
"react-cropper": "^2.1.4",
"react-data-table-component": "^6.11.8",
"react-date-picker": "^8.0.6",
"react-datepicker": "^3.4.1",
"react-dom": "^16.13.1",
"react-draft-wysiwyg": "^1.14.5",
"react-drag-listview": "^0.1.8",
"react-drawer": "^1.3.4",
"react-dropzone": "^11.2.4",
"react-dual-listbox": "^2.0.0",
"react-facebook-login": "^4.1.1",
"react-flatpickr": "^3.10.6",
"react-google-login": "^5.2.2",
"react-hook-form": "^7.15.2",
"react-i18next": "^11.8.5",
"react-icons": "^4.2.0",
"react-image-lightbox": "^5.1.1",
"react-input-mask": "^2.0.4",
"react-jvectormap": "^0.0.16",
"react-leaflet": "^3.0.5",
"react-meta-tags": "^1.0.1",
"react-modal-video": "^1.2.6",
"react-notifications": "^1.7.2",
"react-number-format": "^4.7.3",
"react-perfect-scrollbar": "^1.5.8",
"react-rangeslider": "^2.2.0",
"react-rating": "^2.0.5",
"react-rating-tooltip": "^1.1.6",
"react-redux": "^7.2.1",
"react-responsive-carousel": "^3.2.11",
"react-router-dom": "^5.2.0",
"react-script": "^2.0.5",
"react-scripts": "3.4.3",
"react-select": "^4.3.1",
"react-sparklines": "^1.7.0",
"react-star-ratings": "^2.3.0",
"react-super-responsive-table": "^5.2.0",
"react-switch": "^6.0.0",
"react-table": "^7.6.3",
"react-toastify": "^7.0.3",
"react-toastr": "^3.0.0",
"react-twitter-auth": "0.0.13",
"reactstrap": "^8.8.1",
"recharts": "^2.0.8",
"redux": "^4.0.5",
"redux-saga": "^1.1.3",
"reselect": "^4.0.0",
"sass": "^1.37.5",
"simplebar-react": "^2.3.0",
"styled": "^1.0.0",
"styled-components": "^5.2.1",
"toastr": "^2.1.4",
"typescript": "^4.0.2",
"universal-cookie": "^4.0.4"
},
"devDependencies": {
"@typescript-eslint/eslint-plugin": "^2.27.0",
"@typescript-eslint/parser": "^2.27.0",
"@typescript-eslint/typescript-estree": "^4.15.2",
"eslint-config-prettier": "^6.10.1",
"eslint-plugin-prettier": "^3.1.2",
"husky": "^4.2.5",
"lint-staged": "^10.1.3",
"prettier": "^1.19.1",
"react-test-renderer": "^16.13.1",
"redux-devtools-extension": "^2.13.8",
"redux-mock-store": "^1.5.4"
},
"scripts": {
"start": "react-scripts start",
"build": "react-scripts build && mv build ./deploy/build",
"build-local": "react-scripts build",
"test": "react-scripts test",
"eject": "react-scripts eject"
},
"eslintConfig": {
"extends": "react-app"
},
"husky": {
"hooks": {
"pre-commit": "lint-staged"
}
},
"lint-staged": {
"*.{js,ts,tsx}": [
"eslint --fix"
]
},
"browserslist": {
"production": [
">0.2%",
"not dead",
"not op_mini all"
],
"development": [
"last 1 chrome version",
"last 1 firefox version",
"last 1 safari version"
]
}
}
首先,这个报错信息确实预计在2022年1月11日。
参见“Improving Git protocol security on GitHub”。
January 11, 2022 Final brownout.
This is the full brownout period where we’ll temporarily stop accepting the deprecated key and signature types, ciphers, and MACs, and the unencrypted Git protocol.
This will help clients discover any lingering use of older keys or old URLs.
其次,检查您的 package.json
依赖项是否有任何 git://
URL,如 this example, fixed in this PR.
作为
There was a 4-month warning.
The entire Internet has been moving away from unauthenticated, unencrypted protocols for a decade, it's not like this is a huge surprise.Personally, I consider it less an "issue" and more "detecting unmaintained dependencies".
Plus, this is still only the brownout period, so the protocol will only be disabled for a short period of time, allowing developers to discover the problem.
The permanent shutdown is not until March 15th.
对于Git集线器操作:
与 actions/checkout issue 14 一样,您可以在第一步添加:
- name: Fix up git URLs
run: echo -e '[url "https://github.com/"]\n insteadOf = "git://github.com/"' >> ~/.gitconfig
这会将任何 git://github.com/
更改为 https://github.com/
。
对于本地项目
对于您的所有存储库,您可以设置:
git config --global url."https://github.com/".insteadOf git://github.com/
您也可以使用 SSH,但 GitHub Security 提醒我们,自 2022 年 3 月 15 日起,GitHub 停止接受 DSA 密钥。 2021 年 11 月 2 日之后上传的 RSA 密钥仅适用于 SHA-2 签名。
已弃用的 MAC、密码和未加密的 Git 协议将永久禁用。
所以这个(使用右键)会起作用:
git config --global url."git@github.com:".insteadOf git://github.com/
这会将任何 git://github.com/
(未加密的 Git 协议)更改为 git@github.com:
(SSH URL)。
@toast-ui/react-chart 依赖性给您带来了问题。
如果你仔细观察你的包裹-lock.json 你可以回溯 eve 到 @toast-ui/react-chart
eve --> raphael --> tui-chart --> @toast-ui/react-chart
您可以按照同样的方法在您的项目中查找更多问题。
安装前尝试使用以下命令:
git config --global url."https://".insteadOf git://
P.S。或更好(感谢@bgraves)
git config --global url."https://github.com/".insteadOf git://github.com/
尝试使用 https://github.com 而不是 git://github.com
在存储库的 .git/config 文件中将 git://github.com/<blah>
更改为 git@github.com:<blah>
(注意最后的 /
→ :
)。
在我存储库的 .git/config 文件中我有这一行
[remote "upstream"]
url = git://github.com/curlconverter/curlconverter.git
fetch = +refs/heads/*:refs/remotes/upstream/*
我改成了
[remote "upstream"]
url = git@github.com:curlconverter/curlconverter.git
fetch = +refs/heads/*:refs/remotes/upstream/*
并停止收到此错误。
I hope this answer would provide more context omitted in the other answers.
Git可以使用four protocols传输数据:
- 本地(此处不相关)
- (智能)HTTP - 运行通过标准 HTTPS 端口,并且可以使用各种 HTTP 身份验证机制(例如 username/password)如果需要身份验证 .该协议允许您使用相同的 URL 提供读写访问权限;如果需要认证,服务器会提示客户端。
- 安全 Shell (SSH) - 已验证读取和写入的经过验证的工作流程。它不支持未经身份验证(即匿名)的访问。用户需要在本地生成 SSH 密钥对(包含私钥和 public 密钥)并将他们的 public 密钥上传到服务器。
- Git 协议 - 未加密和未验证。 Git 服务器上 运行 有一个 Git Daemon,它侦听端口
9418
和服务请求。
每个协议使用不同的 URLs:
- 本地:
- 绝对路径(例如
/srv/git/project.git
) - 以
file://
协议为前缀的绝对路径(例如file:///srv/git/project.git
)
- 绝对路径(例如
- HTTP:
https://example.com/gitproject.git
- SSH
ssh://[user@]server/project.git
- 更短的 SCP-like 语法 -
[user@]server:project.git
- Git 协议 - 以
git://
开头
GitHub 有 dropped support for all unencrypted protocols,它只包含 Git 协议(那些使用 git://
前缀的协议)。因此,The unauthenticated git protocol on port 9418 is no longer supported.
错误证实了这一点。
减轻这种情况的方法是在您的 package.json
和锁定文件(例如 yarn.lock
或 package-lock.json
)中搜索字符串 git://
来识别有问题的包( s),并将它们升级到不使用解析为带有 git://
前缀的 URL 的依赖项的版本。如果有问题的包不在您的 package.json
中,您可能会发现 运行 像 yarn why
这样的命令有助于理解安装包的原因。
如果那不可能,并且存储库是 public,一个临时解决方案是手动将 git://
替换为 https://
。但是这个解决方案不是永久性的,下次写入锁定文件时可能会被覆盖。
如果您在 运行 类似 pip install git+git://github.com/SomeCompany/somerepo.git@sometag
时遇到此问题,则只有 git+git
的第二部分需要更改,即变为 pip install git+https://github.com/SomeCompany/somerepo.git@sometag
当所有其他解决方案都不起作用时,请尝试编辑您的全局配置并删除所有 instead of
声明。
git config --global --edit
您好,请尝试以下选项 - 这个对我有用
git config --global url."https://github".insteadOf git://github
现在 git 集线器不支持未验证的 git 协议 https://github.blog/2021-09-01-improving-git-protocol-security-github/
我遇到以下错误
Unhandled rejection Error: Command failed: /usr/bin/git submodule update -q --init --recursive
warning: templates not found /tmp/pacote-git-template-tmp/git-clone-a001527f
fatal: remote error:
The unauthenticated git protocol on port 9418 is no longer supported.
Please see https://github.blog/2021-09-01-improving-git-protocol-security-github/ for more information.
fatal: clone of 'git://github.com/jquery/sizzle.git' into submodule path '/root/.npm/_cacache/tmp/git-clone-19674e32/src/sizzle' failed
Failed to clone 'src/sizzle'. Retry scheduled
warning: templates not found /tmp/pacote-git-template-tmp/git-clone-a001527f
将代码添加到 ~/.gitconfig:
[url "https://"]
insteadOf = ssh://
[url "https://"]
insteadOf = git://