【问题标题】:Connection closed with public key使用公钥关闭连接
【发布时间】:2016-03-03 23:14:29
【问题描述】:

我在使用 SSH 中的公钥时遇到了一些问题。

我想通过 SSH 将客户端 A 连接到服务器 B,无需密码。 我在每台机器上有 2 个用户:root 和 mysql。

通过公钥从 A 到 B 用 root 进行 ssh 连接是可以的。 现在,我想对用户 mysql 做同样的事情,但它不起作用。

我用这个命令在 A 上创建了一个键:

ssh-keygen -t rsa

然后,我从 ~/.ssh/id_rsa.pub(机器 A,用户 mysql)复制密钥并将其粘贴到 ~/.ssh/authorized_keys(机器 B,用户 mysql)上。

当我尝试从机器 A 上,用户 mysql 通过 ssh 连接到机器 B 上,如下所示:

ssh machineB

我遇到了以下问题:

连接被[机器B的ip地址]关闭

我做了 ssh -vvv machineB 并且有:

debug1: Authentications that can continue: publickey,gssapi-with-mic,password
debug3: start over, passed a different list publickey,gssapi-with-mic,password
debug3: preferred gssapi-with-mic,publickey,keyboard-interactive,password
debug3: authmethod_lookup gssapi-with-mic
debug3: remaining preferred: publickey,keyboard-interactive,password
debug3: authmethod_is_enabled gssapi-with-mic
debug1: Next authentication method: gssapi-with-mic
debug3: Trying to reverse map address xx.xxx.xxx.xxx
debug1: Unspecified GSS failure. Minor code may provide more information
Unknown code krb5 195

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

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

debug2: we did not send a packet, disable method
debug3: authmethod_lookup publickey
debug3: remaining preferred: keyboard-interactive,password
debug3: authmethod_is_enabled publickey
debug1: Next authentication method: publickey
debug1: Trying private key: /home/mysql/.ssh/identity
debug3: no such identity: /home/mysql/.ssh/identity
debug1: Offering public key: /home/mysql/.ssh/id_rsa
debug3: send_pubkey_test
debug2: we sent a publickey packet, wait for reply
Connection closed by machineB IP addr

机器 A 上的权限:

drwx------  2 mysql mysql  4096 Nov 30 11:31 .
drwxr-xr-x 79 mysql mysql 28672 Nov 30 14:08 ..
-rw-------  1 mysql mysql   407 Oct  9  2009 authorized_keys
-rw-------  1 mysql mysql   668 Nov 24 16:18 id_dsa
-rw-r--r--  1 mysql mysql   608 Nov 24 16:18 id_dsa.pub
-rw-------  1 mysql mysql  1675 Nov 30 10:08 id_rsa
-rwx------  1 mysql mysql  1675 May 25  2010 id_rsa.archive
-rw-r--r--  1 mysql mysql   400 Nov 30 10:08 id_rsa.pub
-rwxrwxr-x  1 mysql mysql   400 May 25  2010 id_rsa.pub.archive
-rwxrwxr-x  1 mysql mysql  8068 Nov  6 09:20 known_hosts

机器 B 上的权限:

drwx------  2 mysql mysql  4096 Nov 30 11:47 .
drwxr-xr-x 25 mysql apache 4096 Nov 30 12:13 ..
-rw-------  1 mysql mysql  1424 Nov 30 10:10 authorized_keys
-rw-r--r--  1 mysql mysql  3128 Jun  1  2011 known_hosts

【问题讨论】:

  • 您在机器 B /var/log/auth.log 上有一些日志吗?你也可以让ssh -vvv machineB 变得冗长
  • 谢谢你的回答,我回答为“答案”,因为评论太长了;)
  • 你能检查一下mysql的.ssh文件夹的权限吗? ls -al ~/.ssh/
  • 当然。我把结果放在这个问题上。
  • getent passwd mysql 说什么?通常标准 mysql 用户没有主目录,因此 sshd 不知道在哪里查找 .ssh 目录,而 mysql 可能也没有登录 shell。

标签: linux ssh public-key


【解决方案1】:

我有同样的问题。有趣的是,我能够通过ssh <username>@<hostname> -p <port> 登录我按照 Clempat 在/var/log/auth.log 中的建议检查了日志,在那里我发现了这个:

Sep 20 10:31:45 vbndx-VirtualBox sshd[3559]: Invalid user vega.bondx from 10.0.2.2 port 52637

看来我的 ssh 配置文件设置了全局选项等

   Host *
   User vega.bondx

先于

   Host virt
   User vegabondx 

来自this 我意识到顺序很重要。并且 Host * 选项应该在最后。

【讨论】:

    【解决方案2】:

    此消息可能有多种解释。

    对我来说,在客户端提供公钥后服务器正在关闭连接:

    debug1: Next authentication method: publickey
    debug1: Offering public key: blahkey RSA SHA256:V6g54p//KqUOYHbR3KQ4jK+rL9jZEBrZIizKTLmO+aE explicit
    debug3: send packet: type 50
    debug2: we sent a publickey packet, wait for reply
    Connection closed by 2600::1 port 22
    

    LogLevel INFO 处的 sshd 日志没有显示任何内容。当我设置LogLevel VERBOSE时,服务器只记录连接,而根本没有记录失败原因或断开连接。

    我的系统处于混乱状态,我终于想到检查dmesg。果然:

    [13146519.317245] sshd[13970]: segfault at 30 ip b77bceaf sp bf8a1c80 error 4 in libssl.so.1.0.0[b777c000+6b000]
    [13146519.317269] Code: c3 8d 76 00 8d bc 27 00 00 00 00 83 ec 2c 89 74 24 20 8b 74 24 30 89 5c 24 1c 89 7c 24 24 8b 7c 24 38 89 6c 24 28 8b 6c 24 34 <8b> 46 14 e8 6a 26 fd ff 81 c3 3d d1 02 00 85 c0 74 05 3b 46 10 74
    

    sshd 出现段错误。我需要在服务器端更新软件包来解决这个问题。

    【讨论】:

      猜你喜欢
      • 2012-10-01
      • 1970-01-01
      • 2013-02-08
      • 1970-01-01
      • 2017-12-04
      • 1970-01-01
      • 2010-10-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多