前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Centos下堡垒机Jumpserver V3.0环境部署完整记录(2)-配置篇

Centos下堡垒机Jumpserver V3.0环境部署完整记录(2)-配置篇

作者头像
洗尽了浮华
发布2018-01-22 15:07:34
3.3K0
发布2018-01-22 15:07:34
举报
文章被收录于专栏:散尽浮华散尽浮华

前面已经介绍了Jumpserver V3.0的安装,基于这篇安装文档,下面说下Jumpserver安装后的的功能使用:

一、jumpserver的启动

代码语言:javascript
复制
Jumpserver的启动和重启
[root@test-vm001 install]# /opt/jumpserver/service.sh start/restart

二、按照Jumpserver部署过程结尾的账号信息(admin/wangadmin@123)登陆Jumpserver的web界面

修改admin超级管理员的密码

只修改admin的密码即可,SSH秘钥不需要重新生成

然后注销,使用admin重置后的新密码登陆Jumpserver!

三、下面正式记录下Jumpserver的用户添加、推送及堡垒机方式登陆到目标机器的操作

1. 添加用户组(如下以添加ops用户组为例)

2. 添加用户(如下以添加wangshibo用户为例;注意这个用户添加成功后,也会在Jumpserver部署机上自动生成。那么删除这个用户后,也会自动从部署机上删除)

然后到上面添加wangshibo用户时配置的邮箱里会收到一封邮件,如下:

对于上面邮件里的内容,要注意以下几点:

  • web登录密码:是指使用wangshibo用户登陆Jumpserver的web界面的密码,这个密码在王士博用户登陆到Jumpserver界面后可以修改。
  • 密钥下载地址:是指下载wangshibo用户登陆Jumpserver部署机的密码的地址,可以通过打开邮件里的这个地址进行下载;也可以在wangshibo用户添加成功后,点击Jumpserver界面里"查看用户"->"wangshibo"后面的"下载"按钮。
  • ssh密钥文件密码:是指在使用wangshibo用户的key(即第2步中下载的秘钥)登陆Jumpserver部署机时要输入的密码。

------------------------------------------------------------------------------------------------------------------------------- 特别注意一点: 在Jumpserver里添加的用户的秘钥下载后默认是pem格式的证书文件。Xshell和SecureCRT客户端可以直接使用pem格式的证书文件进行登陆(但是注意低版本的SecureCRT还是需要将这个转化为.pub格式后才能登陆) 做法如下: 1)将下载的这个wangshibo.pem秘钥文件放到任意一台linux主机上进行转化为.pub格式的公钥文件的操作(root账号下操作,并且要保证wangshibo.pem文件上传到linux机器上后的权限是600!) localhost:Downloads root# ssh-keygen -e -f wangshibo.pem >> wangshibo.pem.pub Enter passphrase: //注意这里输入的密码就是上面邮件中的"您的ssh密钥文件密码:" localhost:Downloads root# ls -l wangshibo.* -rw-------@ 1 kevin staff 1766 Sep 24 20:36 wangshibo.pem -rw-r--r-- 1 root staff 506 Sep 24 20:39 wangshibo.pem.pub

2)然后将转化后的wangshibo.pem.pub公钥文件拷贝给用户,使用SecureCRT客户端登录Jumpserver部署机。(如下图,PublicKey的方式要推放到最前面)

如下,需要输入的密码即是上面邮件中收到的ssh密钥文件密码(即 9f4ZCpvEiCy3wbS0)

代码语言:javascript
复制
---------------------或者在MAC或linux终端里直接ssh使用.pem秘钥文件登陆------------------------
找到wangshibo.pem的下载路径,使用ssh登陆
localhost:~ root# cd /Users/kevin/Downloads/
localhost:Downloads root# ls -l wangshibo.pem 
-rw-r--r--@ 1 kevin  staff  1766 Sep 29 16:06 wangshibo.pem
localhost:Downloads root# ssh -i /Users/kevin/Downloads/wangshibo.pem -p22 wangshibo@172.16.220.128        //需要在root账号下操作。普通用户要在sudo下操作,(sudo可以限制到只能ssh操作,比如:wangshibo     ALL=(ALL)    NOPASSWD: /usr/bin/ssh)
Enter passphrase for key '/Users/kevin/Downloads/wangshibo.pem':               //输入上面邮件中收到的ssh密钥文件密码(即 9f4ZCpvEiCy3wbS0)
Last login: Fri Sep 29 17:08:19 2017 from 10.45.225.9

Welcome to aliyun Elastic Compute Service!


###    欢迎使用Jumpserver开源跳板机系统   ### 

        1) 输入 ID 直接登录.
        2) 输入 / + IP, 主机名 or 备注 搜索.
        3) 输入 P/p 显示您有权限的主机.
        4) 输入 G/g 显示您有权限的主机组.
        5) 输入 G/g + 组ID 显示该组下主机.
        6) 输入 E/e 批量执行命令.
        7) 输入 U/u 批量上传文件.
        8) 输入 D/d 批量下载文件.
        9) 输入 H/h 帮助.
        0) 输入 Q/q 退出.

Opt or ID>:

还可以做成expect脚本方式登陆:

代码语言:javascript
复制
将下载的用户密钥文件(如wangshibo.pem)放到一台linux服务器的一个用户家目录(比如/home/wangshibo)下,编写expect脚本(安装参考:http://www.cnblogs.com/kevingrace/p/5900303.html)
操作记录如下(wangshibo用户在这台linux服务器上有sudo ssh的权限):
[wangshibo@sh-sre-man01 ~]$ pwd
/home/wangshibo

[wangshibo@sh-sre-man01 ~]$ cat shanghai-jump 
#!/bin/expect  
set timeout 30  
spawn sudo ssh -i /home/wangshibo/wangshibo.pem -p22 wangshibo@122.161.155.17
expect "'/home/wangshibo/wangshibo.pem':"  
send "9f4ZCpvEiCy3wbS0\r"  
interact 

[wangshibo@sh-sre-man01 ~]$ ./shanghai-jump 
spawn sudo ssh -i /home/wangshibo/wangshibo.pem -p22 wangshibo@122.161.155.17
Enter passphrase for key '/home/wangshibo/wangshibo.pem': 
Last login: Mon Oct 16 12:43:26 2017 from 111.110.111.141

Welcome to aliyun Elastic Compute Service!


###    欢迎使用Jumpserver开源跳板机系统   ### 

        1) 输入 ID 直接登录.
        2) 输入 / + IP, 主机名 or 备注 搜索.
        3) 输入 P/p 显示您有权限的主机.
        4) 输入 G/g 显示您有权限的主机组.
        5) 输入 G/g + 组ID 显示该组下主机.
        6) 输入 E/e 批量执行命令.
        7) 输入 U/u 批量上传文件.
        8) 输入 D/d 批量下载文件.
        9) 输入 H/h 帮助.
        0) 输入 Q/q 退出.

Opt or ID>: p
[ID ] 主机名    IP               端口  系统用户  备注
[0  ] sh-sre-man01    111.110.111.141   2200   ['ops', 'devs', 'work']  
[1  ] sh-api-dmk01    111.110.111.140   22     ['ops', 'devs', 'work']  
[2  ] sh-api-dmk02    111.110.111.139   22     ['ops', 'devs', 'work']  
[3  ] sh-inf-deploy01 111.110.111.146   22     ['ops', 'devs', 'work']  
[4  ] sh-sre-monitor01 111.110.111.148   22     ['ops', 'devs', 'work']  
[5  ] sh-db-dmk01     111.110.111.142   22     ['ops', 'devs', 'work']  
[6  ] sh-db-dmk02     111.110.111.143   22     ['ops', 'devs', 'work']  
[7  ] sh-srv-dmk02    111.110.111.144   22     ['ops', 'devs', 'work']  

Opt or ID>: 2
[ID] 系统用户
[0 ] ops
[1 ] devs
[2 ] work

授权系统用户超过1个,请输入ID, q退出
ID>: 0
Last login: Sat Oct 14 23:30:26 2017 from 122.161.155.17

Welcome to aliyun Elastic Compute Service!

[ops@sh-api-dmk02 ~]$

-------------------------------------------------------------------------------------------------------------------------------

3. 添加资产组、机房

4. 现在开始添加机器资产(也就是添加要从跳板机登陆管理的目标机器)

注意一点:可以一台台添加,也可以选择使用批量添加,有批量添加的模版。这里我暂且使用单台添加作为演示。另外:管理用户是指目标客户机上真实存在用户,这个最好填目标主机的root用户(以及目标主机的root的真实密码),如果填写真实存在的普通用户,则它必须拥有NOPASSWD: ALL sudo权限。管理用户的作用是用于推送系统用户(也就是说这个管理用户最好使用root,如果是非root账号,那么它必须拥有NOPASSWD: ALL sudo权限!)

如下添加三台主机资产

通过"编辑"主机,将其划到相应的机房里,完善主机信息

5. 下面开始权限管理的设置 先添加Sudo,这里的sudo其实是Linux中的sudo命令别名,一个sudo别名包含多个命令, 系统用户关联sudo就代表该系统用户有权限sudo执行这些命令。当然可以创建多Sudo,划分给不同权限的用户。如下,创建两个Sudo

============下面是使用过的一个sudo授权==============

如上,设置sudo的别名,设置后,系统用户需要绑定这些sudo的别名,然后进行推送(后续追加sudo命令,就再次进行"重新推送") 推送成功后,查看目标机器的/etc/sudoers文件,可以看到设置的sudo信息

===============================================================

接着添加系统用户。系统用户是服务器上建立的一些真实存在的可以ssh登陆的用户,如work,ops,dev等,系统用户可使用资产的管理用户将其推送到添加的目标资产服务器上。这里我添加了三个系统用户,分别为work、ops、dev(添加时的用户密码随便定义,比如work@123、ops@123、dev@123)。这些系统用户在Jumpserver界面里添加成功后,会自动推送到添加的目标主机上。 特别需要注意一点:这里的系统用户不能使用root!必须是非root用户!然后通过定义的各种sudo进行不同的相关操作(比如允许ops切换到root账号下)

========创建上面系统用户的时候可能报错========

代码语言:javascript
复制
报错:'module' object has no attribute 'getStrongPrime'

解决办法:
注释/usr/lib64/python2.6/site-packages/Crypto/Util/number.py文件中的下面两行,然后重启jumpserver即可
    #if _fastmath is not None:
    #    return _fastmath.getStrongPrime(long(N), long(e), false_positive_prob, randfunc)

系统用户创建好之后,一定要记得点击"推送",将这些系统用户及其密码、sudo的信息推送到添加的目标服务器上。当然,后续要是在jumpserver的界面里删除这个系统用户,那么目标机器上也会自动删除这个系统用户!如下,将这三个系统用户都推送到目标机器上。如果推送成功,则会出现一个类似"系统用户 work 推送成功[ test-vm03,test-vm02,test-vm04 ]"的提示。

可以在系统用户列表,点击系统用户名称,进去查看系统用户的推送情况。比如查看work系统用户的推送情况

--------------------------------------------------------------------------------------------------- 新增主机的推送: 系统用户列表->点击系统用户名称(比如work)->work-未推送主机->点击新增主机,进行推送操作 ---------------------------------------------------------------------------------------------------

推送成功后还可以直接到目标机器上查看推送效果。比如到test-vm02机器上查看:

代码语言:javascript
复制
[root@test-vm02 ~]# cat /etc/passwd
.......
work:x:1000:1000::/home/work:/bin/bash
ops:x:1001:1001::/home/ops:/bin/bash
dev:x:1002:1002::/home/dev:/bin/bash

[root@test-vm02 ~]# cat /etc/sudoers
......
Cmnd_Alias SUPERADMIN = /bin/*, /sbin/*
work ALL = (root)  NOPASSWD: SUPERADMIN
ops ALL = (root)  NOPASSWD: SUPERADMIN
Cmnd_Alias DEVADMIN = /usr/bin/vim, /usr/bin/tar, /usr/bin/gzip, /usr/bin/rsync, /usr/bin/tail
dev ALL = (root)  NOPASSWD: DEVADMIN

如上,说明test-vm02机器已经被推送成功了。其他机器的检查方法跟上面一样。

-----------------------------------------------------------------------------------------------------------------------

这里说下推送失败的案例1: 在系统用户列表,点击系统用户名称,查看系统用户推送详情,把鼠标放到失败按钮上,会看到失败的原因。

可以登陆其中的一台服务器比如test-vm02上,查看/var/log/message日志信息,再结合上面截图中的报错,原因是执行/etc/sudoers文件时,发现没有work用户!也就是说work用户没有useradd创建成功!那么就尝试在test-vm02机器上手动创建work账号,如下:

果然是useradd创建系统用户失败导致的!解决办法:

代码语言:javascript
复制
[root@test-vm02 ~]# rm -f /etc/gshadow.lock

这样就OK了!可以再次手动useradd创建work账号试试,创建成功后再userdel删除它! 最后别忘记在/etc/sudoers文件里删除底部添加的work账号的sudo设置信息,因为这是推送失败的那次添加的sudo信息,删除后重新推送下,否则配置信息就会重叠! 其他服务器的处理方法跟这个一样!

------------------------------------------------------------------------------------------------------------------------

再说下推送失败的案例2

解决方案:http://www.cnblogs.com/kevingrace/p/5893121.html 修改后,可以重启jempserver(即/opt/jumpserver/server.sh restart)

------------------------------------------------------------------------------------------------------------------------

推送失败的案例3

代码语言:javascript
复制
推送用户的时候,如下报错:
Aborting,target uses selinux but python bindings(libselinux-python)aren‘t installed

解决办法:
yum install -y libselinux-python

======================================================================= 推送系统用户失败的案例4:SSH Error: Permission denied (publickey,password)..... 原因可能是:1)添加资产的时候,填写的"管理用户名"和"密码"有误所致的! 2)jumpserver部署机器在ssh登陆目标机器时,报错:WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!。即在jumpserver部署机的/root/.ssh/known_hosts文件里删除目标机器的连接信息就行了。

------------------------------------------------------------------------------------------------------------------------

最后进行"授权规则"的创建

到此,Jumpserver堡垒机的设置已完成!

四、下面正式记录下Jumpserver堡垒机的使用

注销admin用户登陆的Jumpserver,使用wangshibo用户登陆Jumpserver的web界面

点击主机后面的"连接"按钮,选择一个系统用户,比如work用户,然后在webshell里面就能登陆主机了!(其他用户的操作方法与这个是一样的)

也可以直接使用下载的wangshibo用户的秘钥直接登陆到堡垒机上进行操作(登陆方式在上面已经介绍了,使用SecureCRT客户端登录)

五、Jumpserver其他功能介绍

1. 日志审计(记录了服务器的在线情况、每个用户的登陆历史、命令记录、上传下载记录)。也可以直接在"仪表盘"中查看所有机器的综合信息!

2. 上传下载功能(前提是Jumpserver部署机上要有rz、sz命令,这个在部署环境之前就已经yum lrzsz安装了。上传下载功能都只能在非admin管理员账号下操作)

2.1)上传功能 首先使用wangshibo用户登陆Jumpserver界面,将需要上传的文件或者目录拖拽上去,或者点击下面的Drop files to upload"后在弹出的提示框中选择需要上传的文件或目录,然后点击"全部上传",注意:上传文件默认放在目标服务器的/tmp目录下,因为tmp下临时共享目录,普通用户都有操作权限。

然后就到test-vm02、test-vm03、test-vm04服务器上查看是否已成功上传了文件(如下以test-vm02为例)

也可以在命令行进行上传操作,也是上传到对应服务器的/tmp目录下

2.2)下载功能 注意:下载文件的路径一定要是真实存在目标主机的/tmp临时共享目录下的,其他目录路径无效!并且路径要精确到文件!!!(下载后的文件默认自动打包)如下:

可以在命令行进行下载操作,下载路径要是对应服务器的/tmp目录下的文件。下载后以打包形式存在。

3. 批量执行命令:

除此之外,也可以使用普通用户(比如wangshibo)登陆jumpserver界面,在界面里批量执行:

4. "设置功能",如下设置后,添加"资产"的时候,在"管理账号"这一项就可以选择"使用默认"了。

-------------------------------------------------------------------------------------------------------------------------- 最后说下在Jumpserver里面批量添加主机资产的操作(先导出模版,然后在模版里填好主机信息,最后再导入模版文件)。如下导出的模版更名为jumpserver.xlsx:

注意:添加主机(或批量添加主机)后,推送系统用户,有时会失败,比如报错SSH Error: Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password或认证失败。 这时可以尝试删除主机,重新添加主机,然后重新推送系统用户还有,用于推送系统用户的管理用户(如上,选用root作为管理用户)的密码一定要正确!(一定要是真实存在于主机上的用户的真实密码!,否则推送就会失败)

-------------------------------------------------------------------------------------------- 发现jumpserver部署机在堡垒机环境搞好后,不能正常su切换到其他用户下,报错如下: "没有该用户,或许你是以root运行的 No that user."

解决办法:注释掉connect.py文件的下面两行判断设置即可(注释后不需要重启jumpserver服务)! [root@test-vm01 jumpserver]# cd [root@test-vm01 ~]# cd /opt/jumpserver [root@test-vm01 jumpserver]# vim connect.py #if not login_user: # 判断用户是否存在 # color_print('没有该用户,或许你是以root运行的 No that user.', exits=True)

然后再尝试su切换用户就可以了。

总结: jumpserver堡垒机在刚部署好的时候,本机使用su切换到其他用户下,默认是不行的,需要按照上面的方式解决后才能su切换。 堡垒机本机上su切换到其他用户,都是会进入到堡垒机使用界面的(如上),但是只有推送后的系统用户才能成功跳转到其他机器上。

-------------------------------------------------------------------------------------------------- jumpserver里面的用户(如上的wangshibo)除了可以用邮件里的秘钥在远程登陆以外,还可以直接使用密码在远程ssh登陆(只是在jumpserver 界面里创建用户时,默认没有设置密码,可以在jumpserver部署机上手动给用户设置密码,而后就可以在远程使用用户+密码登陆堡垒机了)。

---------------------------------------------------------------------------------------------

代码语言:javascript
复制
使用wangshibo用户登录Jumpserver界面,在Web terminal里登录work、ops、dev系统用户失败!     
在jumpserver部署机上使用"tail -f /var/log/message" 或者"salt-minion -l debug"命令查看,
发现有错误如下:
.......
[ERROR   ] DNS lookup of 'salt' failed.
[ERROR   ] Master hostname: 'salt' not found. Retrying in 30 seconds 

原因是:salt master端的minion_id不对导致的

解决办法:
重启jumpserver服务即可!(在jumpserver部署机上查看是否有/etc/salt/minion_id文件,如果有就果断删除,然后再重启jumpserver服务)

[root@test-vm001 ~]# rm -f /etc/salt/minion_id 
[root@test-vm001 ~]# /app/jumpserver/service.sh restart
Stopping jumpsever service:                                [  确定  ]
Starting jumpsever service:                                [  确定  ]

然后再在Web terminal里登录work、ops、dev系统用户就ok了。

到此,关于Jumpserver堡垒机的设置和使用已经暂时介绍完毕,后续有新进展在更新!

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2016-06-15 ,如有侵权请联系 cloudcommunity@tencent.com 删除

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
堡垒机
腾讯云堡垒机(Bastion Host,BH)可为您的 IT 资产提供代理访问以及智能操作审计服务,为客户构建一套完善的事前预防、事中监控、事后审计安全管理体系,助力企业顺利通过等保测评。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档