SSH 设置免密登录遇到的报错, Permission denied (publickey,gssapi-keyex,gssapi-with-mic). - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
zzandlove
V2EX    程序员

SSH 设置免密登录遇到的报错, Permissio denied (publickey,gssapi-keyex,gssapi-with-mic).

  •  2
     
  •   zzandlove 2016-12-06 17:01:09 +08:00 40378 次点击
    这是一个创建于 3234 天前的主题,其中的信息可能已经有所发展或是发生改变。

    搞了一个 VPS ,想设置免钥登录,生成私钥和公钥之后,把"#PasswordAuthentication yes" 改成"PasswordAuthentication no" 之后就一直报这个错, Permission denied (publickey,gssapi-keyex,gssapi-with-mic). 搜索了下,权限都 OK , authorized_keys 600 和 644 都试了,.ssh 也是 700 ,就是没办法啊,老报错,求高手解决

    80 条回复    2019-09-27 17:44:22 +08:00
    lifanxi
        1
    lifanxi  
       2016-12-06 17:10:15 +08:00
    连 ssh 时加-vvv 参数,看具体的 Log 分析原因。
    maikcn
        2
    maikcn  
       2016-12-06 17:13:48 +08:00
    私钥的权限设置为 600 了吗? ~/.ssh/id_rsa
    indust
        3
    indust  
       2016-12-06 17:14:37 +08:00
    SELinux 问题? 试试 restorecon -r ~/.ssh
    zzandlove
        4
    zzandlove  
    OP
       2016-12-06 17:29:09 +08:00
    @indust 关闭了
    zzandlove
        5
    zzandlove  
    OP
       2016-12-06 17:29:26 +08:00
    @maikcn 设置了的
    zzandlove
        6
    zzandlove  
    OP
       2016-12-06 17:29:42 +08:00
    @lifanxi 怎么理解?菜鸟实在不懂 哈哈
    noobsheldon
        7
    noobsheldon  
       2016-12-06 17:36:17 +08:00
    vultr
        8
    vultr  
       2016-12-06 17:37:15 +08:00
    报这个错误,应该是你的公钥和私钥没有配对好。

    ssh user@ip -v

    看看具体报什么错误。
    zzandlove
        9
    zzandlove  
    OP
       2016-12-06 17:37:19 +08:00
    @noobsheldon 谢谢,这个看过,没用,哈哈
    noobsheldon
        10
    noobsheldon  
       2016-12-06 17:39:35 +08:00
    @zzandlove 你是什么系统啊
    BOYPT
        11
    BOYPT  
       2016-12-06 17:41:44 +08:00
    手工添加的 key 可以参考下我的脚本:

    https://coding.net/u/boypt/p/ptcoding/git/raw/master/bash/addkey.sh

    如果是 rh 系的要注意 selinux ,用命令

    restorecon -R -v $HOME/.ssh
    sunnyyj
        12
    sunnyyj  
       2016-12-06 17:43:43 +08:00
    前两天用 google cloud ,想改成 root 直接登录也遇到相同的问题
    改 sshd_config , PermitRootLogin yes ,重启 sshd 服务
    然后执行了几个命令,突然就好了,不知道对你有没有帮助
    chown -R root:root ~/.ssh
    chmod 600 ~/.ssh/authorized_keys
    restorecon -r -vv ~/.ssh
    zzandlove
        13
    zzandlove  
    OP
       2016-12-06 17:45:58 +08:00
    @vultr

    penSSH_6.6.1, OpenSSL 1.0.1e-fips 11 Feb 2013
    debug1: Reading configuration data /root/.ssh/config
    debug1: Reading configuration data /etc/ssh/ssh_config
    debug1: /etc/ssh/ssh_config line 56: Applying options for *
    debug1: Connecting to 我的 IP [我的 IP] port 22.
    debug1: Connection established.
    debug1: permanently_set_uid: 0/0
    debug1: identity file /root/.ssh/id_rsa type 1
    debug1: identity file /root/.ssh/id_rsa-cert type -1
    debug1: identity file /root/.ssh/id_dsa type -1
    debug1: identity file /root/.ssh/id_dsa-cert type -1
    debug1: identity file /root/.ssh/id_ecdsa type -1
    debug1: identity file /root/.ssh/id_ecdsa-cert type -1
    debug1: identity file /root/.ssh/id_ed25519 type -1
    debug1: identity file /root/.ssh/id_ed25519-cert type -1
    debug1: Enabling compatibility mode for protocol 2.0
    debug1: Local version string SSH-2.0-OpenSSH_6.6.1
    debug1: Remote protocol version 2.0, remote software version OpenSSH_6.6.1
    debug1: match: OpenSSH_6.6.1 pat OpenSSH_6.6.1* compat 0x04000000
    debug1: SSH2_MSG_KEXINIT sent
    debug1: SSH2_MSG_KEXINIT received
    debug1: kex: server->client aes128-ctr [email protected] none
    debug1: kex: client->server aes128-ctr [email protected] none
    debug1: kex: [email protected] need=16 dh_need=16
    debug1: kex: [email protected] need=16 dh_need=16
    debug1: sending SSH2_MSG_KEX_ECDH_INIT
    debug1: expecting SSH2_MSG_KEX_ECDH_REPLY
    debug1: Server host key: ECDSA 7b:70:a2:01:de:01:13:68:9f:38:2a:32:11:a0:60:7e
    debug1: Host ‘我的 IP' is known and matches the ECDSA host key.
    debug1: Found key in /root/.ssh/known_hosts:1
    debug1: ssh_ecdsa_verify: signature correct
    debug1: SSH2_MSG_NEWKEYS sent
    debug1: expecting SSH2_MSG_NEWKEYS
    debug1: SSH2_MSG_NEWKEYS received
    debug1: SSH2_MSG_SERVICE_REQUEST sent
    debug1: SSH2_MSG_SERVICE_ACCEPT received
    debug1: Authentications that can continue: publickey,gssapi-keyex,gssapi-with-mic,password
    debug1: Next authentication method: gssapi-keyex
    debug1: No valid Key exchange context
    debug1: Next authentication method: gssapi-with-mic
    debug1: Unspecified GSS failure. Minor code may provide more information
    No Kerberos credentials available

    debug1: Unspecified GSS failure. Minor code may provide more information
    No Kerberos credentials available

    debug1: Unspecified GSS failure. Minor code may provide more information


    我改了默认的 22 端口,改成其他的了
    zzandlove
        14
    zzandlove  
    OP
       2016-12-06 17:49:22 +08:00
    @noobsheldon CentOS 7 64
    aaronzjw
        15
    aaronzjw  
       2016-12-06 17:51:04 +08:00
    chmod 600 '密钥'
    zzandlove
        16
    zzandlove  
    OP
       2016-12-06 17:52:14 +08:00
    @sunnyyj 谢谢
    zzandlove
        17
    zzandlove  
    OP
       2016-12-06 17:52:53 +08:00
    @aaronzjw 是 600 哦
    hilenlai
        18
    hilenlai  
       2016-12-06 17:56:27 +08:00
    我有个问题是在 .ssh 里面做了 config 分配,但是每次重启都要执行:`ssh-add -K ~/.ssh/id_rsa` 才可以。谁知道怎么破?
    vultr
        19
    vultr  
       2016-12-06 17:59:50 +08:00
    @zzandlove 自己搜吧,关键词: No Kerberos credentials available
    zzandlove
        20
    zzandlove  
    OP
       2016-12-06 18:02:20 +08:00
    @vultr 好咧,十分感谢大神,我研究研究去
    hellojammy
        21
    hellojammy  
       2016-12-06 18:17:45 +08:00
    我得做法是,使用 ssh-keygen -t rsa 命令 把机器的公钥 id_rsa.pub 直接拷贝到服务器的 authorized_keys 文件中,然后就可以实现 ssh 免密码登录了。详细的步骤可以参见: http://www.hello1010.com/linux_scp
    GG668v26Fd55CP5W
        22
    GG668v26Fd55CP5W  
       2016-12-06 20:19:39 +08:00 via iPhone
    你知道 ssh-copy-id 吗?
    julyclyde
        23
    julyclyde  
       2016-12-06 20:51:29 +08:00
    @vultr 你都没搞明白就瞎指导。本案问的不是 kerberos 认证,是 public key 认证
    julyclyde
        24
    julyclyde  
       2016-12-06 20:53:45 +08:00
    上面-v 的结果不全
    gssapi 之后应该还有好多内容

    另外需要搭配服务器上的日志来看 secure 或者 auth.log
    julyclyde
        25
    julyclyde  
       2016-12-06 20:55:22 +08:00
    从 debug1: permanently_set_uid: 0/0 来看,客户端是 root
    (如果没有指定用其它用户名登录服务器,则也是 root )
    我怀疑是 PermitRoot no 导致的问题
    adrianzhang
        26
    adrianzhang  
       2016-12-06 20:58:43 +08:00 via Android
    居然这么多回复都没解决?用户名用错了没?
    cxbig
        27
    cxbig  
       2016-12-06 20:58:49 +08:00   1
    @zzandlove 你说改了端口,不用 22 。那么上面的详细信息为啥还是链接到 22 ?
    Bardon
        28
    Bardon  
       2016-12-06 21:08:35 +08:00
    问问题前,请放出你的配置
    ls -laF ~/.ssh
    cat /etc/sshd/sshd_config

    不要让大家猜谜语
    Bardon
        29
    Bardon  
       2016-12-06 21:10:54 +08:00
    另外, cat ~/.ssh/config 也放出来,可以修改掉 ip 与端口
    bombless
        30
    bombless  
       2016-12-06 21:15:43 +08:00 via Android
    我之前试过这种报错是网络问题, 233
    vultr
        31
    vultr  
       2016-12-06 21:40:27 +08:00
    @julyclyde 我知道,但是通过这个关键词能搜到对应的答案。我猜的话应该是 authorized_keys 不对。
    vultr
        32
    vultr  
       2016-12-06 21:42:27 +08:00
    @julyclyde 认同你的这个观点:我怀疑是 PermitRoot no 导致的问题
    Showfom
        33
    Showfom  
    PRO
       2016-12-06 21:48:21 +08:00
    @BOYPT 收下脚本 省得每次都手工 curl 了
    julyclyde
        34
    julyclyde  
       2016-12-06 22:04:15 +08:00
    @vultr 奇怪,为什么这个关键词能搜到……
    billlee
        35
    billlee  
       2016-12-06 22:21:20 +08:00
    看起来客户端都没尝试用密钥认证,你在客户端把私钥和公钥分别放到 ~/.ssh/id_${type} 和 ~/.ssh/id_${type}.pub 了吗?
    kuretru
        36
    kuretru  
       2016-12-06 22:25:54 +08:00 via iPhone
    有可能是 OpenSSL 版本太低了,是不是刚装好系统没更新过软件包
    BOYPT
        37
    BOYPT  
       2016-12-07 00:28:48 +08:00
    @Showfom 嗯~ o(* ̄ ̄*)o 我一般这样用

    ssh root@xxxx sh- < ~/addkey.sh
    或者在目标机里面 wget [一个容易记的缩短网址] -O - | sh
    Showfom
        38
    Showfom  
    PRO
       2016-12-07 01:10:54 +08:00
    @BOYPT 嗯~ o(* ̄ ̄*)o 哥哥我收下再说 乃平身~话说我想个短网址来托管 bash 程序- -
    msg7086
        39
    msg7086  
       2016-12-07 05:50:57 +08:00
    airqj
        40
    airqj  
       2016-12-07 07:49:30 +08:00 via Android
    ssh-agent
    运行这个试试
    finian
        41
    finian  
       2016-12-07 08:52:22 +08:00
    cat 一下本地 ~/.ssh/config 配置,还有你连接时用的命令(用户名、端口等)
    zzandlove
        42
    zzandlove  
    OP
       2016-12-07 09:16:35 +08:00
    @billlee 有的
    zzandlove
        43
    zzandlove  
    OP
       2016-12-07 09:17:11 +08:00
    @julyclyde 极有可能是这个
    zzandlove
        44
    zzandlove  
    OP
       2016-12-07 09:17:57 +08:00
    @julyclyde 真没有,我刚试了下,还是这些内容
    zzandlove
        45
    zzandlove  
    OP
       2016-12-07 09:18:14 +08:00
    @adrianzhang 木有的
    zzandlove
        46
    zzandlove  
    OP
       2016-12-07 09:20:05 +08:00
    @finian 用户名就是 root ,我暂时还没有加其他的,端口不是默认的 22 ,我改了一个其他的。默认配置也就改了#PasswordAuthentication yes" 改成"PasswordAuthentication no"
    zzandlove
        47
    zzandlove  
    OP
       2016-12-07 09:20:49 +08:00
    @kuretru 刚买的 VPS ,没有更新,原则上应该不至于还需要去更新把
    AstroProfundis
        48
    AstroProfundis  
       2016-12-07 09:22:45 +08:00
    难道楼主是在 vps 上生成了密钥然后就禁用密码登录出来了.......
    楼主你再重新说一遍上面的每个命令你都在什么地方执行的...

    另外 ls -l ~/.ssh/

    以及我也怀疑是 SSH 客户端版本问题,服务端的太新了所以协商不出来双方都接受的加密算法之类的
    kuretru
        49
    kuretru  
       2016-12-07 09:24:57 +08:00 via iPhone
    @zzandlove 我之前在 nya 开的 CentOS 就是这样,莫名错误公钥连接不上,后来更新软件包就解决了
    zzandlove
        50
    zzandlove  
    OP
       2016-12-07 09:28:32 +08:00
    @Bardon

    ls -laF ~/.ssh

    总用量 20
    drwx------ 2 root root 4096 12 月 6 18:21 ./
    dr-xr-x--- 6 root root 4096 12 月 6 16:33 ../
    -rw-r--r-- 1 root root 395 12 月 6 17:31 authorized_keys
    -rw-r--r-- 1 root root 139 12 月 6 17:40 config
    -rw-r--r-- 1 root root 175 12 月 6 16:09 known_hosts

    -------------------------------------------------------------

    cat /etc/sshd/sshd_config 显示 cat: /etc/sshd/sshd_config: 没有那个文件或目录
    zzandlove
        51
    zzandlove  
    OP
       2016-12-07 09:32:40 +08:00
    @AstroProfundis 这倒没有,是另外开了一个 SSH 链接,我用的是 MAC 自带的终端工具

    ls -l ~/.ssh/
    显示
    -rw-r--r-- 1 root root 395 12 月 6 17:31 authorized_keys
    -rw-r--r-- 1 root root 139 12 月 6 17:40 config
    -rw-r--r-- 1 root root 175 12 月 6 16:09 known_hosts
    zzandlove
        52
    zzandlove  
    OP
       2016-12-07 09:33:21 +08:00
    @kuretru 咋更新,我是在 vultr 买的 vps
    kuretru
        53
    kuretru  
       2016-12-07 09:34:47 +08:00
    @zzandlove RHEL 系的话 yum update , deb 系的 apt-get update aptget upgrade
    baizhebz
        54
    baizhebz  
       2016-12-07 10:06:29 +08:00
    这个设置了吗 AllowUsers
    zzandlove
        55
    zzandlove  
    OP
       2016-12-07 10:08:16 +08:00
    @baizhebz 没有也,有关系吗
    huson
        56
    huson  
       2016-12-07 10:10:18 +08:00
    你是不是在创建机器时候 指定的 key ? 不要这样,先设置密码 然后再用 ssh-copy-id 去拷贝证书,或者拷贝公钥
    finian
        57
    finian  
       2016-12-07 10:46:27 +08:00
    @zzandlove 感觉是没找到本地的 key ,可以在本地 .ssh/config 配置

    ```
    Host test
    HostName x.x.x.x
    Port 22
    User root
    IdentitiesOnly yes
    IdentityFile ~/.ssh/id_rsa # 指定 key
    ```

    然后试试

    ```
    ssh test
    ```
    ppwangs
        58
    ppwangs  
       2016-12-07 10:50:13 +08:00
    把你 ssh 登陆命令打出来
    zzandlove
        59
    zzandlove  
    OP
       2016-12-07 11:39:23 +08:00
    @finian 试过,无效,哈哈
    vultr
        60
    vultr  
       2016-12-07 12:02:06 +08:00
    还没搞定吗? 你还是别找了,按这个说明重新配置一下吧, https://wiki.centos.org/HowTos/Network/SecuringSSH
    263
        61
    263  
       2016-12-07 12:11:27 +08:00
    @zzandlove 看不清楚楼主两边的环境,根本没法判断啊。 能不能 ls -al 列出 vps 和本地 Mac 的 .ssh 文件夹及里面的内容呢?
    murusu
        62
    murusu  
       2016-12-07 12:13:15 +08:00
    客户端的 ssh_config 看看是不是 GSSAPIAuthentication 设置成 yes ?是的话注释掉看看
    263
        63
    263  
       2016-12-07 12:15:54 +08:00
    @263 内容是指文件夹里面的文件,不是文件里面的内容,忘记补充了。
    heyli
        64
    heyli  
       2016-12-07 12:26:40 +08:00
    有可能权限问题
    chmod 700 /home/user
    chmod 600 /home/user/.ssh/authorized_keys
    试试
    finian
        65
    finian  
       2016-12-07 12:49:21 +08:00
    @zzandlove 远程的 /etc/ssh/sshd_config 配置没有把 `PubkeyAuthentication` 设置为 `no` 吧
    zzandlove
        66
    zzandlove  
    OP
       2016-12-07 13:40:57 +08:00
    @finian 哈哈,都试过咯
    zzandlove
        67
    zzandlove  
    OP
       2016-12-07 13:43:32 +08:00
    @murusu 是 RSAAuthentication ,目前是 yes ,也注释了的
    yizhilee
        68
    yizhilee  
       2016-12-07 13:48:09 +08:00
    附言写上你的具体操作步骤和两边环境配置吧。
    AstroProfundis
        69
    AstroProfundis  
       2016-12-07 14:11:12 +08:00
    呃,话说楼主你还上得去服务器的话先把密码认证打开再调试吧,反正默认也会优先尝试密钥登录,不行再 fallback 到密码上...

    然后服务器上 .ssh/ 中文件的权限,和 authorized_keys 里面的密钥是否正确?(除了权限,有没有奇怪的空字符之类的也可以检查下)
    AstroProfundis
        70
    AstroProfundis  
       2016-12-07 14:13:26 +08:00
    以及认真的,服务端 yum update 更新一把试试...
    ayiis
        71
    ayiis  
       2016-12-07 14:28:48 +08:00
    1. 移动.ssh 这个文件夹到 bak

    2. ssh x.x.x.x #随便连一个服务器

    3. 询问是否继续时输入 yes #此时 sshd 就会自动创建带有 sshd 上下文的.ssh 文件夹

    4. 把 bak 里的 authorized_keys 移动到.ssh

    跟 700 , 600 没有关系
    douyang
        72
    douyang  
       2016-12-07 14:29:14 +08:00
    @zzandlove
    [root@niaoyun-118-192-147-6 .ssh]#cd /root/.ssh/
    [root@niaoyun-118-192-147-6 .ssh]#ssh-keygen
    [root@niaoyun-118-192-147-6 .ssh]#ssh-agent
    [root@niaoyun-118-192-147-6 .ssh]#ssh-copy-id -i id_rsa.pub [email protected]

    zzandlove
        73
    zzandlove  
    OP
       2016-12-07 14:30:41 +08:00
    @vultr 哈哈,用这个里面的方法搞定了
    zzandlove
        74
    zzandlove  
    OP
       2016-12-07 14:31:32 +08:00
    问题解决了,我也不知道咋回事,按照 vultr 大神给的链接, https://wiki.centos.org/HowTos/Network/SecuringSSH ,重新配置了下,就好了。。。有需要的收藏这个 url
    xuhaoyangx
        75
    xuhaoyangx  
       2016-12-07 14:58:39 +08:00
    @zzandlove 其实这个问题还有一种可能是 ip 子网设错导致的,很少见。还是给人留个思路,后辈装的系统,不会手动配固定 ip ,就用系统带的工具配,子网不能填写 255.255.255.0 这类格式,就没填,导致子网默认变成 32 ,虽然系统其他功能都能正常使用上网,但是就是 ssh 用证书无法正常登录,改成正常的子网即可
    julyclyde
        76
    julyclyde  
       2016-12-09 18:26:16 +08:00
    @xuhaoyangx 掩码产生的不止影响 ssh ,凡是需要判断远近的都会影响
    merlinfeng
        77
    merlinfeng  
       2017-11-15 16:51:12 +08:00
    碰到了相同的问题 @zzandlove 你是删除从新配置的吗
    merlinfeng
        78
    merlinfeng  
       2017-11-16 15:50:23 +08:00
    RSAAuthentication yes
    PubkeyAuthentication yes
    #AuthorizedKeysFile .ssh/authorized_keys

    艹 手残 把第三行的注释打开了 再注释 重启 sshd 就好了
    lagel
        79
    lagel  
       2018-03-29 17:39:03 +08:00
    我也遇到过:和楼主配置都差不多。
    结果最后发现,我是没有指定:user
    ssh 连接的时候,默认使用了本机的 user。
    zantop
        80
    zantop  
       2019-09-27 17:44:22 +08:00
    我是忘了指定 IdentityFile
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5890 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 44ms UTC 02:36 PVG 10:36 LAX 19:36 JFK 22:36
    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