如何为您的SSH服务器安装三种不同的双因素身份验证方案。如今,安全性比以往任何时候都更加重要,保护SSH服务器是您作为系统管理员可以做的最重要的事情之一。传统上,这意味着禁用密码身份验证并改用SSH密钥。这绝对是您应该做的第一件事,但这并不意味着不能使SSH更安全。two-factorauthentication是指登录需要两次认证,可以是密码和SSH密钥,也可以是密钥和谷歌等第三方服务。这意味着单一身份验证方法的妥协不会危及服务器。以下指南是为SSH启用双因素身份验证的三种方法。修改SSH配置时,请始终确保将第二个终端连接到服务器。第二个终端意味着您可以修复您在SSH配置中犯的任何错误。即使重新启动SSH服务,打开的终端仍将保留。SSH密钥和密码SSH支持要求使用多种身份验证方法进行登录。身份验证方法在位于/etc/sh/sshd_config的SSH服务器配置文件的AuthenticationMethods选项中设置。SSH需要提供SSH密钥,然后在/etc/ssh/sshd_config中添加下一行时提示输入密码:MatchUserjsmithAuthenticationMethods"publickey,password"当您编辑或保存了新的sshd_config文件时,您应该通过运行以下命令确保您没有犯任何错误:sshd-t阻止SSH启动的任何语法或其他错误将在此处标记.当ssh-t运行没有错误时,使用systemctl重新启动SSH:systemctlrestartsshd现在,您可以使用新终端登录以验证是否会提示您输入密码并需要SSH密钥。如果您使用ssh-v,例如:ssh-vjsmith@example.com您将能够看到登录的每一步。请注意,如果您将密码设置为必需的身份验证方法,则需要确保将PasswordAuthentication选项设置为yes。SSHwithGoogleAuthenticator谷歌自家产品上使用的双因素身份验证系统可以集成到您的SSH服务器中。如果您已经使用GoogleAuthenticator,此方法很方便。虽然libpam-google-authenticator是由Google编写的,但它是开源的。此外,GoogleAuthenticator由Google编写,但不需要Google帐户即可工作。感谢SitaramChamarty的贡献。如果您尚未在手机上安装和配置Google身份验证器,请参阅此处的说明。首先,我们需要在服务器上安装GoogleAuthenticator包。以下命令将更新您的系统并安装所需的软件包:apt-getupdateapt-getupgradeapt-getinstalllibpam-google-authenticator现在,我们需要在您手机上的GoogleAuthenticatorAPP上注册服务器。这是通过首先运行我们刚刚安装的程序来完成的:google-authenticator当运行这个程序时,它会问几个问题。您应该以适合您的设置的方式回答,但是,最安全的选择是对每个问题都回答y。如果您以后需要更改这些选项,只需重新运行google-authenticator并选择不同的选项即可。当你运行google-authenticator时,终端会打印一个二维码,一些代码看起来像这样:你的新密钥是:VMFY27TYDFRNDKFY你的验证码是259652你的紧急刮擦代码是:96915246702229833182270725181996你应该1所有这些代码被记录到与密码管理器一样安全的位置。“刮刮码”是一次性代码,即使您的手机不可用,也始终允许您访问。要将服务器注册到AuthenticatorAPP,只需打开该应用程序并点击右下角的红色加号即可。然后选择扫描条码选项扫描打印到终端的二维码。您的服务器和应用程序现已连接。回到服务器上,我们现在需要为SSH编辑PAM(可插入身份验证模块),以便它使用我们刚刚安装的身份验证程序包。PAM是一个独立的系统,负责Linux服务器上的大部分身份验证。需要修改的SSHPAM文件位于/etc/pam.d/sshd,编辑为:nano/etc/pam.d/sshd在文件顶部添加以下行:authrequiredpam_google_authenticator.so另外,我们需要注释掉一行,这样PAM就不会提示输入密码了。更改此行:#StandardUn*xauthentication.@includecommon-auth如下:#StandardUn*xauthentication.#@includecommon-auth```接下来,我们需要编辑SSH服务器配置文件:nano/etc/ssh/sshd_config"`将这一行:ChallengeResponseAuthenticationno更改为:ChallengeResponseAuthenticationyes接下来,添加以下行以启用两种身份验证方案:SSH密钥和GoogleAuthenticator(键盘交互):AuthenticationMethods"publickey,keyboard-interactive"在重新加载之前SSH服务器,最好检查配置中没有错误。执行以下命令:sshd-t如果没有发现错误,请使用新配置重新加载SSH:systemctlreloadsshd.service现在一切都应该工作了.现在,当您登录到您的服务器时,您将需要使用您的SSH密钥,当系统提示您时:验证码:打开AuthenticatorAPP并输入为您的服务器显示的6位代码。AuthyAuthy是一种双因素身份验证服务,与Google一样,它提供基于时间的代码。但是,Authy不需要手机,因为它提供台式机和平板电脑客户端。它们还支持离线身份验证,不需要Google帐户。您需要从应用商店或从Authy下载页面链接的桌面客户端安装Authy应用。安装应用程序后,服务器上需要一个API密钥。该过程需要几个步骤:在此处注册一个帐户。向下滚动到“Authy”部分。在帐户上启用双因素身份验证(2FA)。返回“Authy”部分。为您的服务器创建一个新的应用程序。从新应用程序的常规设置页面顶部获取API密钥。您需要“PRODUCTIONAPIKEY”旁边的眼睛符号来显示密钥。图:在安全的地方记下API密钥。现在,回到服务器上,以root身份运行以下命令:curl-O'https://raw.githubusercontent.com/authy/authy-ssh/master/authy-ssh'bashauthy-sshinstall/usr/local/bin出现提示时输入API密钥。如果您犯了错误,您可以随时编辑/usr/local/bin/authy-ssh并重新添加。现在安装了Authy。但是,在为用户启用之前,它不会开始工作。启用Authy的命令具有以下形式:/usr/local/bin/authy-sshenable
