无密码 SSH 无法与 Mac OS X 10.9.5 Mavericks 配合使用

无密码 SSH 无法与 Mac OS X 10.9.5 Mavericks 配合使用

我无法在 Mac OS X 10.9.5 Mavericks 机器上进行无密码登录。authorized_keys正确设置文件后,我可以登录远程 Ubuntu 机器。但是,我无法进行反向操作。

因此,我尝试通过确定是否可以在不使用密码的情况下执行此操作来排除 Mac 设置故障:

ssh localhost

在我的 Ubuntu 机器上这样做很有效,但 Mac 一直要求输入密码。是的,我检查了文件authorized_keys以及文件known_hosts,并确保我的 Mac 的密钥都存在于这两个文件中。但我无法在没有密码的情况下id_rsa.pub通过 SSH 连接。localhost

我读了其他帖子比如这个

甚至在文件中启用了以下两个设置(通过删除它们前面的主题标签)sshd_config

RSAAuthentication yes
PubKeyAuthentication yes

仍要求输入密码。

authorized_key将和文件的副本放在known_hostsetc 目录中。

仍要求输入密码。

答案1

我提供了一个Stack Overflow 上的答案解释了需要的分步过程通过 SSH 设置无密码访问。以下是针对您的特定需求而定制的说明。

首先,使用-v如下标志将 SSH 连接设置为详细模式:

ssh -v localhost

如手册页中所述ssh;可通过以下方式访问man ssh

 -v      Verbose mode.  Causes ssh to print debugging messages about its
         progress.  This is helpful in debugging connection, authentica-
         tion, and configuration problems.  Multiple -v options increase
         the verbosity.  The maximum is 3.

通过向我展示登录过程的确切流程以及到底是什么阻塞了它,这在过去为我省去了很多麻烦。例如,这是我在本地 Mac OS X 10.9.5 机器上运行该命令的输出:

ssh -v localhost

OpenSSH_6.2p2, OSSLShim 0.9.8r 8 Dec 2011
debug1: Reading configuration data /etc/ssh_config
debug1: /etc/ssh_config line 20: Applying options for *
debug1: /etc/ssh_config line 53: Applying options for *
debug1: Connecting to localhost [::1] port 22.
debug1: Connection established.
debug1: identity file /Users/Giacomo1968/.ssh/id_rsa type 1
debug1: identity file /Users/Giacomo1968/.ssh/id_rsa-cert type -1
debug1: identity file /Users/Giacomo1968/.ssh/id_dsa type -1
debug1: identity file /Users/Giacomo1968/.ssh/id_dsa-cert type -1
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_6.2
debug1: Remote protocol version 2.0, remote software version OpenSSH_6.2
debug1: match: OpenSSH_6.2 pat OpenSSH*
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: SSH2_MSG_KEX_DH_GEX_REQUEST(1024<1024<8192) sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_GROUP
debug1: SSH2_MSG_KEX_DH_GEX_INIT sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_REPLY
debug1: Server host key: RSA 01:aa:8e:8e:b9:e1:4b:e8:bd:c5:a2:20:a3:c7:f1:18
debug1: Host 'localhost' is known and matches the RSA host key.
debug1: Found key in /Users/Giacomo1968/.ssh/known_hosts:43
debug1: ssh_rsa_verify: signature correct
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: Roaming not allowed by server
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey,keyboard-interactive
debug1: Next authentication method: publickey
debug1: Offering RSA public key: /Users/Giacomo1968/.ssh/id_rsa
debug1: Authentications that can continue: publickey,keyboard-interactive
debug1: Trying private key: /Users/Giacomo1968/.ssh/id_dsa
debug1: Next authentication method: keyboard-interactive
Password:

如您所见,它弹出密码提示。但在此之前,它显然在检查我的 RSA 公钥。由于我没有公钥,它只是转到下一个身份验证方法。在ssh -v设备上运行时,请注意输出,以查看哪里出现问题。

还要确保目标计算机上的 SSH 文件具有与以下内容匹配的权限并且由尝试访问的帐户拥有,如下例所示:

-rw------- [username] [usergroup] authorized_keys
-rw------- [username] [usergroup] id_rsa
-rw-r--r-- [username] [usergroup] id_rsa.pub
-rw-r--r-- [username] [usergroup] known_hosts

chmod因此对文件运行此命令authorized_keys

sudo chmod 600 ~/.ssh/authorized_keys

并对文件运行此chmod命令id_rsa

sudo chmod 600 ~/.ssh/id_rsa

答案2

我找到了问题所在。远程主机记录了每个 RSA 或 DSA 密钥的来源。这以纯文本形式显示在授权密钥列表的每一行末尾(由于nano不进行文本换行,因此通常看不到)。

我首先通过 ssh 连接到远程主机,然后复制密钥并将其与 合并authorized_keys。不好。

从客户端计算机,必须使用特殊的复制命令将密钥复制到远程主机,scp或(除非安装了或,ssh-copy-id否则 OS X 没有这个命令)。brewport

然后就可以进行合并authorized_keys了。这是我粗心大意造成的错误。

答案3

对我来说,我有一个用于连接主机的辅助密钥。为了使用该密钥进行连接,您需要使用以下命令将其添加到身份中:

ssh-add yourPrivateKey

答案4

我当时已经束手无策了……我误以为ssh-copy-id这是一个仅适用于 Linux 的实用程序。最后,我放下自尊,在 macOS 终端中输入命令,它就成功了!

ssh-copy-id me@sshd-server

我不知道魔法ssh-copy-id有什么用,但它就是有效。我能够使用简单的命令成功无需密码登录:

ssh me@sshd-server

我对 一点运气都没有cat id_rsa.pub >> ~/.ssh/authorized_hosts。每次我尝试 ssh 到服务器时,它都只是不断要求我输入密码。这是正确的 600 权限authorized_hosts和 700 权限~/.ssh

相关内容