You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

通过SSH执行Git命令:如何正确使用私钥?

Git克隆时指定私钥失败的解决方法

我来帮你搞定这个问题!你遇到的核心问题是把SSH的参数直接传给了git clone命令——但Git本身并不识别-key或者-i这些参数,这些是SSH客户端的专属参数,得通过正确的方式传递给SSH才行。下面给你两种靠谱的解决方案:

方法一:临时通过环境变量指定私钥

你可以用GIT_SSH_COMMAND环境变量,把SSH的参数打包传给Git。命令格式如下(注意替换成你的私钥路径和仓库地址):

GIT_SSH_COMMAND="ssh -i /绝对路径/到/你的/私钥文件" git clone 'ssh-url-for-my-git-repo' 'destination_folder'

⚠️ 重要提醒:如果你的私钥是.ppk格式(PuTTY生成的),默认Git用的OpenSSH客户端是不支持这个格式的。你需要先用PuTTYgen把它转换成OpenSSH格式:

  1. 打开PuTTYgen,点击「Load」加载你的.ppk文件
  2. 点击菜单栏的「Conversions」→「Export OpenSSH key」
  3. 保存成无后缀或者.pem格式的文件,再用这个文件作为上面命令里的私钥路径。

方法二:配置SSH Config(一劳永逸)

如果不想每次克隆都输一大串命令,可以配置SSH的config文件,以后直接用简化地址克隆:

  1. 打开SSH配置文件:

    • Linux/macOS:编辑~/.ssh/config(如果没有就新建一个)
    • Windows:编辑C:\Users\你的用户名\.ssh\config(同样没有就新建)
  2. 在文件里添加以下内容(替换成你的实际信息):

Host my-git-repo  # 自定义一个别名,随便取
    HostName git.example.com  # Git平台的主机名,比如github.com、gitlab.com或者你的私有服务器地址
    User git  # Git平台的用户名,一般都是git,除非你的私有服务器有特殊设置
    IdentityFile /绝对路径/到/转换后的OpenSSH私钥文件  # 注意要是转好格式的私钥
    IdentitiesOnly yes  # 强制只用指定的私钥,避免SSH自动尝试其他密钥干扰
  1. 接下来克隆的时候,直接用别名地址就行:
git clone git@my-git-repo:用户名/仓库名.git 'destination_folder'

额外注意事项

  • 私钥文件的权限必须严格限制:Linux/macOS要执行chmod 600 你的私钥文件,Windows要确保只有当前用户拥有读取权限(右键文件→属性→安全→高级,设置只有自己能访问),不然SSH会因为权限太松拒绝使用这个密钥。
  • 如果还是失败,可以加上-v参数查看详细日志,比如GIT_SSH_COMMAND="ssh -v -i /path/to/key" git clone ...,从日志里找具体的错误原因(比如密钥格式不对、权限问题、主机连接失败等)。

内容的提问来源于stack exchange,提问作者Caffeine

火山引擎 最新活动