为1个用户启用仅ssh键登录到我的Mac


21

我有一个Macbook Air,我希望允许不使用密码进行远程SSH访问。我创建了一个名为remotepair我已经登录并确认可以与Mac一起使用的用户。我还将此用户添加到“删除登录”服务的允许用户列表中,并打开了该服务。全部在“共享”控制面板中完成。

我已获得另一台计算机的公钥并将其添加到文件中/Users/remotepair/.ssh/authorized_keys。当另一台计算机运行时,ssh remotepair@<my ip>我仍然收到密码提示。

如何禁用此密码提示?


1
我建议在您的问题标题中添加“仅SSH密钥身份验证”-它的读取方式现在听起来像是常规的GUI登录窗口登录。
NReilingh

Answers:


27

要禁用密码身份验证,您需要进行编辑/etc/sshd_config。在Terminal

sudo vim /etc/sshd_config

(或替换为您喜欢的编辑器)

寻找这行:

#ChallengeResponseAuthentication yes

并将其更改为:

ChallengeResponseAuthentication no

也就是说,删除#开头的,然后更改yesno

现在,所有后续的ssh登录名都将要求您使用ssh密钥,并且不会提示您输入密码。如果您没有本地访问权限,请确保在执行此操作之前ssh密钥起作用!无需重新启动ssh守护程序或任何其他操作,因为它会根据需要为每个新的传入连接启动。请注意,您可能还会看到PasswordAuthentication一行,但默认情况下no已为该行。

如果您的ssh键不起作用,那确实是一个单独的问题,但这可以回答现在提出的问题:)


我还需要将用户添加到AllowUser设置。我只能猜测GUI设置没有修改此文本行。
杰森

7
注意,在更高版本的Mac OS X中(肯定是El Capitan),sshd_config已移至/etc/ssh/
zelk '16

2
请注意,自MacOS Sierra(v10.12.x)起,默认设置PasswordAuthentication已更改为yes,因此请确保将其更改为no
特拉维斯·克拉克

3

要更新macOS Sierra(特别是10.12.6)的答案,似乎配置文件现在 /etc/ssh/sshd_config

必须取消注释+修改2行以完全禁用密码身份验证:(这些是默认sshd_config文件中的第57至62行,包括第57行)

# To disable tunneled clear text passwords, change to no here!
PasswordAuthentication no
#PermitEmptyPasswords no

# Change to no to disable s/key passwords
ChallengeResponseAuthentication no

如前所述,您可以从System Preferences.app GUI启用/禁用ssh访问,并且在编辑配置之间不需要重新启动守护程序。


1

您应该检查所涉及目录的权限:/Users/remotepair//Users/remotepair/.ssh,它们必须不允许“其他”用户进行写访问。我.ssh只有所有者拥有访问权限。

另外,在远程系统上,执行a ssh -v remotepair@yoursystem以查看允许和尝试使用哪些授权方法。请注意 Authentications that can continue: publickey,password,keyboard-interactive。也许您必须RSAAuthentication在系统上启用。


1

在此处的测试系统上,禁用SSH提示要求将以下两行添加到/etc/sshd_config

PasswordAuthentication no
ChallengeResponseAuthentication no

中的注释sshd_config还建议添加以下行:

UsePAM no
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.