如何使用SSH密钥和禁用密码身份验证


12

我正在尝试从Linux客户端计算机通过SSH远程访问Mac(我确实具有对该Mac的物理访问权限)。我的目标是从网络外部访问此Mac。端口转发在路由器上设置。在客户端计算机上,我可以ssh user@ip使用公共IP,并且可以进入Mac,因此端口转发正常工作。

现在,我想设置SSH密钥。我已经在客户端计算机上生成了SSH密钥,但是我想先在Mac设置上获取SSH守护进程。我编辑/etc/ssh_config并设置PasswordAuthentication no。我使用以下命令重新启动了SSH:,sudo launchctl unload /System/Library/LaunchDaemons/ssh.plist然后sudo launchctl load -w /System/Library/LaunchDaemons/ssh.plist。当我再次尝试从客户端进行SSH登录时,它仍然会要求输入密码。

我看了一下这篇文章,并从我添加UsePAM no到配置文件中的答案中重新开始了该服务launchctl。仍然提示我输入密码。

我也在这里尝试了解决方案。仍然提示我输入密码。

如何设置我的地址ssh_config,使其不要求输入密码,仅接受SSH密钥?我是否无法正确重启守护程序?我还缺少下一步吗?

Answers:


13

我正在编辑错误的配置文件!相反/etc/ssh_config,我编辑了private/etc/sshd_config。我认为,如果我/etc/sshd_config按照@GhostLyrics的最新答案进行编辑,这可能也会起作用,但我尚未进行测试,因此无法确定。在那之后,我使用重启了服务,sudo launchctl stop com.openssh.sshd然后sudo launchctl start com.openssh.sshd就可以得到想要的行为。这是我找到相关信息的资源:https : //superuser.com/questions/364304/how-do-i-configure-ssh-on-os-x

这是我更改的配置选项:

PermitRootLogin no
PasswordAuthentication no
PermitEmptyPasswords no
ChallengeResponseAuthentication no

之后,我能够在客户端计算机上成功生成SSH密钥,将公共密钥移至~/.ssh/authorized_keysMac上,并将该文件的权限设置为644。

重要的是要注意,这些权限是针对我的公共密钥的。我的私有密钥权限设置为600我的客户端计算机上。如果您的文件夹中同时有公钥和私钥,并且系统上有多个用户,那么这非常重要~/.ssh。如果您的私钥权限设置为644,则任何用户都可以读取您的私钥并模拟您。此外,该~/.ssh文件夹的权限应为700。


5
在内部,/etc/sshd_config/private/etc/sshd_config同一个文件。:)
GhostLyrics '16

8

/etc/ssh/ssh_config是客户端的配置文件,如果您的主目录中没有特定的文件,则使用该文件。您要编辑的是/etc/ssh/sshd_config服务器上的那个。

您可能需要在此处设置PermitRootLogin without-password(或noPasswordAuthentication no


更新:由于您正在运行优胜美地,因此文件/etc/sshd_config符合以下答案:https : //apple.stackexchange.com/a/167405/11135

为了进一步阐明为什么当设置仍提示PasswordAuthentication no/etc/ssh/ssh_config理解你配置的内容是很重要的。“ 通过SSH 建立传出连接时,请勿提供密码身份验证。”


我没有一个/etc/ssh/ssh_config,只有一个/etc/ssh_config。我正在优胜美地上跑步。我确实尝试过,PasswordAuthentication no但是仍然提示我输入密码。
beznez

知道了 那不是我想要的。我想使用密钥但不使用密码从我的Linux客户端SSH到Mac。我应该为传入连接更改什么?
beznez

/etc/sshd_configPasswordAuthentication no。对困惑感到抱歉。请让我知道如何使答案更清楚。:)
GhostLyrics

我仍然遇到相同的行为。当我从Linux计算机切换到Mac时,它会提示我输入密码。
beznez

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.