如何实现SSH通过扫二维码登录Linux服务器

Linux服务器通过ssh远程连接的时候,如果使用的是用户名+密码的验证方式,万一密码泄露或者密码过于简单被暴li破解,服务器的安全就得不到保障。由此,可以结合谷歌动态验证口令来为服务器再加一道安全防护门。此时,就算是用户密码被泄露,但没有动态验证口令也是无法登录服务器的。

环境

OS:CentOS7
软件包:google-authenticator.x86_64
安卓手机一部
谷歌动态口令的下载及使用自行百度

操作步骤

1.一键安装脚本

#安装epel yum install -y epel-release.noarch &> /dev/null yum makecache &> /dev/null #安装google authenticator yum install -y google-authenticator.x86_64 &> /dev/null echo -e "\033[31mDo you want me to update your "/root/.google_authenticator" file? (y/n) y" echo -e "\033[31m你希望我更新你的“/root/.google_authenticator”文件吗(y/n)?\033[0m" echo -e "\033[31mDo you want to disallow multiple uses of the same authentication" echo -e "\033[31mtoken? This restricts you to one login about every 30s, but it increases" echo -e "\033[31myour chances to notice or even prevent man-in-the-middle attacks (y/n) y" echo -e "\033[31m你希望禁止多次使用同一个验证令牌吗?这限制你每次登录的时间大约是30秒, 但是这加大了发现甚至防止中间人攻ji的可能性(y/n)?\033[0m" echo -e "\033[31mBy default, a new token is generated every 30 seconds by the mobile app." echo -e "\033[31mIn order to compensate for possible time-skew between the client and the server," echo -e "\033[31mwe allow an extra token before and after the current time. This allows for a" echo -e "\033[31mtime skew of up to 30 seconds between authentication server and client. If you" echo -e "\033[31mexperience problems with poor time synchronization, you can increase the window" echo -e "\033[31mfrom its default size of 3 permitted codes (one previous code, the current" echo -e "\033[31mcode, the next code) to 17 permitted codes (the 8 previous codes, the current" echo -e "\033[31mcode, and the 8 next codes). This will permit for a time skew of up to 4 minutes" echo -e "\033[31mbetween client and server." echo -e "\033[31mDo you want to do so? (y/n) y" echo -e "\033[31m默认情况下,令牌保持30秒有效;为了补偿客户机与服务器之间可能存在的时滞,\033[0m" echo -e "\033[31m我们允许在当前时间前后有一个额外令牌。如果你在时间同步方面遇到了问题, 可以增加窗口从默认的3个可通过验证码增加到17个可通过验证码,\033[0m" echo -e "\033[31m这将允许客户机与服务器之间的时差增加到4分钟。你希望这么做吗(y/n)?\033[0m" echo -e "\033[31mIf the computer that you are logging into isn't hardened against brute-force" echo -e "\033[31mlogin attempts, you can enable rate-limiting for the authentication module." echo -e "\033[31mBy default, this limits attackers to no more than 3 login attempts every 30s." echo -e "\033[31mDo you want to enable rate-limiting? (y/n) y" echo -e "\033[31m如果你登录的那台计算机没有经过固化,以防范运用蛮力的登录企图,可以对验证模块\033[0m" echo -e "\033[31m启用尝试次数限制。默认情况下,这限制攻ji者每30秒试图登录的次数只有3次。 你希望启用尝试次数限制吗(y/n)?\033[0m" echo -e "\033[32m 在App Store 搜索Google Authenticator 进行App安装 \033[0m" expect << EOF spawn google-authenticator expect { "y/n" {send "y\n";exp_continue} "y/n" {send "y\n"} "y/n" {send "y\n"} "y/n" {send "y\n"} } EOF #/etc/pam.d/sshd文件,修改或添加下行保存 #auth required pam_google_authenticator.so sed -i '1a\auth required pam_google_authenticator.so' /etc/pam.d/sshd #编辑/etc/ssh/sshd_config找到下行 #ChallengeResponseAuthentication no #更改为 #ChallengeResponseAuthentication yes sed -i 's/ChallengeResponseAuthentication no/ChallengeResponseAuthentication yes/' /etc/ssh/sshd_config #重启SSH服务 systemctl restart sshd

2.运行脚本后直接扫屏幕生成的二维码或者复制二维码上方的URL到浏览器打开后扫码,然后使用扫码生成的动态口令进行登录
2.1打开远程连接工具xshell,如图

如何实现SSH通过扫二维码登录Linux服务器


2.2输入动态口令

如何实现SSH通过扫二维码登录Linux服务器


2.3输入服务器密码

如何实现SSH通过扫二维码登录Linux服务器


2.4查看/var/log/secure日志可以发现ssh远程登录通过了pam_google_authenticator动态模块的验证并且成功登录服务器

如何实现SSH通过扫二维码登录Linux服务器

遇到的问题

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/2f34896db3723e2052aaf0dbe2438f0c.html