git 使用 ssh 总是提示需要输入密码 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
yixinlove
V2EX    程序员

git 使用 ssh 总是提示需要输入密码

  •  
  •   yixinlove 2019-11-13 09:05:05 +08:00 5807 次点击
    这是一个创建于 2159 天前的主题,其中的信息可能已经有所发展或是发生改变。

    在本地有多个 ssh key,使用 ssh-config 文件配置了访问服务器的 key id_rsa_a 和访问代码库的 key id_rsa_code,具体 config 如下:

    Host git HostName xxx.gitlab.com User spiderman IdentityFile ~/.ssh/id_rsa_code AddKeysToAgent yes Host server HostName 10.10.11.111 User xxx IdentityFile ~/.ssh/id_rsa_server AddKeysToAgent yes 

    使用命令 ssh server 时没有问题,不需要密码可以登录,但是使用 git 时,总是提示需要输入密码。从网上查找说是需要把 id_rsa_code 这个加入到 ssh-agent 里,但通过 ps -ef 可以看到有一个 ssh-agent 进程,只是在登录用户下做 ssh-add -L 时提示 clould not open a connection to your authentication agent.

    请教下这种情况是什么原因?我之前电脑没有出现这种问题,配置 config 之后就可以用多个 key 了。现在是所有机器只要多个 ssh key 都会出现这个问题。 出现问题的环境:

    1. manjaro,主力开发机,已经启动 gnome-keyring 时没问题,但是从其他机器 ssh 远程到这台机(同一个用户)就会报上面错误;
    2. WSL 里使用 git 也会出现上述错误。

    但另一个服务器 centos 里只有一个 ssh key 的情况下,不会出现,且 centos 里都没有启动 ssh-agent。

    14 条回复    2019-11-14 09:29:22 +08:00
    chenset
        1
    chenset  
       2019-11-13 09:18:57 +08:00
    我的:

    # windows (下面的命令要在 git bash 中执行)
    eval $(ssh-agent -s)
    ssh-add /c/Users/.ssh/id_rsa

    # mac
    Host *
    UseKeychain yes
    AddKeysToAgent yes
    User root
    Host 10.0.0.1
    IdentityFile ~/.ssh/1.key
    Host 10.0.0.2
    IdentityFile ~/.ssh/2.key

    #ubuntu
    # eval $(ssh-agent) 命令行执行
    Host *
    AddKeysToAgent yes
    User root
    Host github.com
    IdentityFile ~/.ssh/github.key

    #centos
    # eval $(ssh-agent) 命令行执行
    Host *
    User root
    Host github.com
    IdentityFile ~/.ssh/github.key
    chenset
        2
    chenset  
       2019-11-13 09:20:08 +08:00
    主要是用 eval $(ssh-agent) , 而不是 ssh-agent
    xidaduo
        3
    xidaduo  
       2019-11-13 09:20:36 +08:00
    将 Host 也改成 HostName 一样的内容,例如

    Host xxx.gitlab.com
    HostName xxx.gitlab.com

    或者在 config 里面加上
    PreferredAuthentications publickey


    这两个解决方案都试一下
    chenset
        4
    chenset  
       2019-11-13 09:21:19 +08:00
    supersu
        5
    supersu  
       2019-11-13 09:33:06 +08:00 via Android
    yixinlove
        6
    yixinlove  
    OP
       2019-11-13 09:35:24 +08:00
    @chenset 嗯,在网上找到方式,也是执行 `eval $(ssh-agent -s)` 或者 `ssh-agent /bin/bash` (或者 zsh )。但是这都需要手动执行一次,我理解的是配置了 config 之后能够自动使用 key,不需要手动加载了。
    webshe11
        7
    webshe11  
       2019-11-13 09:40:31 +08:00
    确认一下,.git/config 里面的 origin url 该不会还是 http/https 协议的吧?那样的话根本没走 ssh
    yixinlove
        8
    yixinlove  
    OP
       2019-11-13 09:41:26 +08:00
    @webshe11 没有,确认是走的 git 协议。
    yixinlove
        9
    yixinlove  
    OP
       2019-11-13 09:45:11 +08:00
    @xidaduo 神人,把 Host 和 HostName 配置成一样的,就可以了。非常感谢。

    @chenset @supersu @webshe11 同时感谢各位大佬的建议。
    cmingxu
        10
    cmingxu  
       2019-11-13 10:04:25 +08:00
    clone 时候用的是 git://协议还是 https/http 协议? 如果是 http/https, 那么底层走的是 http/https 协议来传输 git object,如果是 git 协议,底层用 ssh 协议(这时候才是 ssh 验证)。

    1, http 协议能否记住密码和 git client 实现有关系,看下 crendential-helper 的配置,git config --global list 查看下。
    2, 如果是 git 协议, 可以指定 identify file 来保证使用正确的私钥。GIT_SSH_COMMAND='ssh -i private_key_file' git ...
    skiy
        11
    skiy  
       2019-11-13 10:11:43 +08:00
    我用 sshmenu
    hlx
        12
    hlx  
       2019-11-13 11:10:57 +08:00
    @chenset windows 可以在 Git 安装目录下的 etc 文件夹下的 bash.bashrc 文件最后 加入 eval $(ssh-agent -s), 换行 ssh-add ~/.ssh/id_rsa_key 然后每次打开 git bash 窗口就会自动加入 key 啦, 很方便, 哈哈
    genius2k
        13
    genius2k  
       2019-11-13 12:09:36 +08:00
    server 用的什么 git 服务端?添加公钥了吗?
    yixinlove
        14
    yixinlove  
    OP
       2019-11-14 09:29:22 +08:00
    统一回复,首先谢谢大佬的建议,然后:
    1. git 使用的是 git 协议,走 ssh
    2. server 使用的也是 git 协议,无需启动 ssh-agent,因为只有一个 ssh-key,所以也没有配置 ssh config,但能正常使用
    3. 根据楼上的回复,把 ssh config 里对于 git 使用的配置 Host 和 HostName 写成一样,即 git url 域名即可,也不需要 ssh-agent 就可以使用了,不需要输入密码
    4. eval $(ssh-agent -s) 每次都会起一个 ssh-agent 进程,我觉得没必要,所以才发帖。

    @genius2k @cmingxu @hlx
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5560 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 28ms UTC 08:56 PVG 16:56 LAX 01:56 JFK 04:56
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86