Linux使用ssh动态验证码登录机器

ssh动态验证码登录机器

Google Authenticator是一个动态验证码程序,兼容各种智能手机平板设备,可以用来做各种帐号的二次验证,增加帐号的安全性。SSH是Linux系统的最重要防线之一,为了防止密码泄露或者被爆破,可以使用Google Authenticator来做二次验证,使用方法也很简单

谷歌身份验证器生成的是动态验证码,默认30秒更新。修改配置,SSH登录必须在输入密码之前输入动态验证码。即使账号和密码泄露,验证码输入错误,仍然无法登录。苹果或者安卓手机端可以安装身份验证器App读取验证码。

操作系统环境

[[email protected] ~]# cat /etc/issue
\S
Kernel \r on an \m

操作步骤如下

1.关闭selinux

[[email protected] ~]# sed -i ‘[email protected][email protected][email protected]‘ /etc/selinux/config

注:需要重启生效

[[email protected] ~]# setenforce 0

注:临时关闭生效提示警告不影响使用


查看selinux是否关闭

[[email protected] ~]# getenforce 
Disabled

2.安装软件依赖组件

[[email protected] ~]# yum -y install gcc make pam-devel libpng-devel libtool wget git

3.添加阿里云epel源

[[email protected] ~]# wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo

4.qrencode安装,谷歌身份验证器要调用那程序生成并显示二维码

[[email protected] ~]# yum -y install qrencode

5.安装谷歌身份验证器

[[email protected] ~]# mkdir -p /app
[[email protected] ~]# cd /app
[[email protected] app]# git clone https://github.com/google/google-authenticator.git
Cloning into ‘google-authenticator‘...
remote: Counting objects: 1461, done.
remote: Total 1461 (delta 0), reused 0 (delta 0), pack-reused 1460
Receiving objects: 100% (1461/1461), 2.33 MiB | 25.00 KiB/s, done.
Resolving deltas: 100% (776/776), done.
[[email protected] app]# cd google-authenticator/libpam/
[[email protected] libpam]# ./bootstrap.sh
[[email protected] libpam]# ./configure
[[email protected] libpam]# make
[[email protected] libpam]# make install
[[email protected] libpam]# cp .libs/pam_google_authenticator.so /lib64/security/

6.配置PAM,添加谷歌身份验证器PAM模块配置

[[email protected] ~]# head -n 2 /etc/pam.d/sshd
#%PAM-1.0
auth       required    pam_google_authenticator.so

7.修改ssh服务配置文件sshd_config

[[email protected] libpam]# sed -i ‘s#^ChallengeResponseAuthentication no#ChallengeResponseAuthentication yes#‘ /etc/ssh/sshd_config

8.重启ssh服务

[[email protected] libpam]# systemctl restart sshd.service

9.生成二次验证码的系统账号后运行验证器程序google-authenticator,或者切换到相应用户需要需要进行二次验证码的用户,这里我是直接使用root用户验证

[[email protected] ~]# google-authenticator 
 
Do you want authentication tokens to be time-based (y/n) y #提示是否要基于时间生成令牌,选择y
https://www.google.com/chart?chs=200x200&chld=M|0&cht=qr&chl=otpauth://totp/[email protected]%3Fsecret%3D44FOMDL4D5NC7RFJD4CJDDGXFM%26issuer%3DiZ25nmodinrZ

Your new secret key is: 44FOMDL4D5NC7RFJD4CJDDGXFM
Your verification code is 770892
Your emergency scratch codes are:
  23028713
  12647530
  28715420
  82540673
  13054818
#上面的网址为生成的二维码图形地址(需要翻墙才能打开),还会生成密钥,以及5个紧急验证码(当无法获取动态验证码时使用,注意:这5个验证码用一个就会少一个!请保存好!)
Do you want me to update your "/root/.google_authenticator" file? (y/n) y  #提示是否要更新验证文件,选择y
 
Do you want to disallow multiple uses of the same authentication
token? This restricts you to one login about every 30s, but it increases
your chances to notice or even prevent man-in-the-middle attacks (y/n) y  #禁止使用相同口令
 
By default, tokens are good for 30 seconds. In order to compensate for
possible time-skew between the client and the server, we allow an extra
token before and after the current time. If you experience problems with
poor time synchronization, you can increase the window from its default
size of +-1min (window size of 3) to about +-4min (window size of
17 acceptable tokens).
Do you want to do so? (y/n) y  #默认动态验证码在30秒内有效,由于客户端和服务器可能会存在时间差,可将时间增加到最长4分钟,是否要这么做:这里选择是n,继续默认30秒
 
If the computer that you are logging into isn‘t hardened against brute-force
login attempts, you can enable rate-limiting for the authentication module.
By default, this limits attackers to no more than 3 login attempts every 30s.
Do you want to enable rate-limiting (y/n) y  #是否限制尝试次数,每30秒只能尝试最多3次,这里选择y进行限制

10.手机安装谷歌身份验证器,苹果手机打开app store搜索应用Google Authenticator,安卓系统打开相应的应用进行安装即可,由于我使用的是安卓系统安装的是安卓版的

11.打开APP后点击“开始设置”,扫描终端的二维码,需要安装专用的条码扫描器,其他软件都无法扫描二维码无效,由于我的手机无法番墙,所以只能使用秘钥的方式了

配置好后的身份验证器 

12.由于终端使用的是crt,需要进行设置

使用SecureCRT客户端的话,默认情况下会不支持这种验证方式,只要在会话选项中修改SSH—-Authentication,设置为Keyboard Interactive即可,其他的选项包括Password都要去掉

13.使用crt登录

 
注:使用Publickey免密码登录方式来登录ssh的话,不支持使用Google Authenticator验证,必须是密码验证的登录方式才支持。

时间: 2024-10-10 01:21:50

Linux使用ssh动态验证码登录机器的相关文章

Linux下SSH免密码登录

转自:http://haitao.iteye.com/blog/1744272 ssh配置 主机A:10.0.5.199 主机B:10.0.5.198 需要配置主机A无密码登录主机A,主机B 先确保所有主机的防火墙处于关闭状态. 在主机A上执行如下: 1. $cd ~/.ssh 2. $ssh-keygen -t rsa  --------------------然后一直按回车键,就会按照默认的选项将生成的密钥保存在.ssh/id_rsa文件中. 3. $cp id_rsa.pub author

linux下ssh面密码登录设置

ssh 免密码登录 1. ssh-keygen -t rsa 三次回车 2. cat ~/.ssh/id_rsa.pub >>  ~/.ssh/authorized_keys 3. 验证 ssh localhost 如果不需要密码登录,表示设置成功 4. 面密码登录其他机器 ssh-copy-id -i hostname 注意:hostname必须在/etc/hosts文件绑定ip 这样本机就可以面密码登录目标机器 验证:ssh hostname 不需要密码登录 /etc/hosts文件只需要

Linux之间ssh免密码登录

一.生成公私钥对 $ ssh-keygen -t rsa -P '' Generating public/private rsa key pair. Enter file in which to save the key (/root/.ssh/id_rsa):  Your identification has been saved in /root/.ssh/id_rsa. Your public key has been saved in /root/.ssh/id_rsa.pub. The

【Linux】ssh免密登录

一.ssh免密配置 ssh 无密码登录要使用公钥与私钥.linux下可以用用ssh-keygen生成公钥/私钥对,下面我以CentOS为例. 有机器A(192.168.1.155),B(192.168.1.181).现想A通过ssh免密码登录到B. 1.在A机下生成公钥/私钥对. [[email protected] ~]$ ssh-keygen -t rsa -P '' -P表示密码,-P '' 就表示空密码,也可以不用-P参数,这样就要三车回车,用-P就一次回车.它在/home/chenlb

ssh免密码登录机器(使用公钥和秘钥进行加密来实现)

ssh 无密码登录要使用公钥与私钥.linux下可以用用ssh-keygen生成公钥/私钥对,下面我以CentOS为例. 登录的原理: 有机器A(192.168.1.155),B(192.168.1.181).现想A通过ssh免密码登录到B.首先以root账户登陆为例. 1.首先我们需要在A机器上生成一对公钥和密钥对,生成的方法如下: 1 [[email protected] ~]# ssh-keygen -t rsa -P '' -P表示密码,-P '' 就表示空密码,也可以不用-P参数,这样

linux上ssh免密登录原理及实现

因为我的服务器集群需要回收日志到中央进行统一处理,所以需要建立ssh互信关系实现免密登录.关于ssh的使用大家可能都很熟悉了,我们今天主要来讲下ssh连接和免密登录的原理. scp 传输文件 scp(secure copy)是linux系统下基于ssh登录进行安全的远程文件拷贝的命令. # 传递文件到远程 scp local_file remote_username@remote_ip:remote_file # 传递文件夹到远程 scp -r local_folder remote_usern

Linux 通过SSH实现无密码登录

step1. 在deployNode上生成密钥 我当前用户是ceph,在 .ssh/目录下执行命令   ssh-keygen -t rsa [[email protected] .ssh]$ ls ceph.log config id_rsa id_rsa.pub known_hosts 会发现该目录下生成两个文件,id_rsa, id_rsa.pub step2. 将id_rsa.pub复制到其他节点下对应用户目录的.ssh/目录下,并执行命令 cat id_rsa.pub >> autho

Linux上ssh免密码登录

由于工作需要,需要频繁发布系统,于是就决定在发布机上搞一套自动上传文件,远程运行脚本的自动化发布,但是每次ssh都需要输入密码,于是就需要本文提到的SSH免密码登录. 现有A服务器和B服务器,A服务器需要SSH免密码连到B服务器. 先在B服务器上以下命令,会在用户目录下创建.ssh目录并在其下创建公钥和私钥(id_rsa,id_rsa.pub): ssh-keygen -t rsa -P '' 然后为了测试方便,先将自己的公钥导入到受信的公钥列表中 cd ~/.ssh cat id_rsa.pu

Linux 配置ssh 免密码登录

在平常应用中,我们经常会登录到其他主机,比如说服务器,每次都需要用户名和密码. 我们可以通过ssh免密码登录服务器而不需要输入密码. 现在有一台ubuntu的阿里云服务器,称之为 server.  公用ip 地址为:192.168.100.100.  现在开始实现用自己的电脑实现ssh免密码登录到 server中.我的电脑是windows 系统,并且安装了Git.(mac 的原理其实一样) 1. 打开Git Bash 执行以下命令生成 sshkey ssh-keygen -t rsa -C "[