前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何实现SSH通过扫二维码登录Linux服务器

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

作者头像
星哥玩云
发布2022-07-31 10:02:56
2K0
发布2022-07-31 10:02:56
举报
文章被收录于专栏:开源部署

背景

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

环境

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

操作步骤

1.一键安装脚本

代码语言:javascript
复制
#安装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服务器
如何实现SSH通过扫二维码登录Linux服务器

2.2输入动态口令

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

2.3输入服务器密码

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

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

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

遇到的问题

1.使用某米手机扫二维码的时候出现如下提示

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

于是安装了Google play应用,但是打开后闪退,搜索相关资料后貌似是没有谷歌服务框架的原因,于是又下载了谷歌服务框架应用,仍然没有成功,可能访问国外网站可以解决此问题。

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

由于时间问题没再折腾,后面换了某为手机就行了。 2.如果手机扫码不成功,可以chrome 网上应用店搜索“身份验证器”插件,然后添加到Chrome浏览器进行扫码

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

3.如果手机丢失或者其它情况导致无法获取到动态口令,可以使用紧急刮刮码来登录服务器,默认配置文件是/root/.google_authenticator,不过这里面的刮刮码用一个少一个,建议保存到安全的地方。

如何实现SSH通过扫二维码登录Linux服务器
如何实现SSH通过扫二维码登录Linux服务器
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 背景
  • 环境
  • 操作步骤
  • 遇到的问题
相关产品与服务
验证码
腾讯云新一代行为验证码(Captcha),基于十道安全栅栏, 为网页、App、小程序开发者打造立体、全面的人机验证。最大程度保护注册登录、活动秒杀、点赞发帖、数据保护等各大场景下业务安全的同时,提供更精细化的用户体验。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档