摘录自 https://github.com/LaiJingli/open_bastion_host
环境:
CentOS6.7 X86_64
跳板机地址:192.168.2.11
后端服务器地址:192.168.2.12
0、下载跳板机文件
git clone https://github.com/LaiJingli/open_bastion_host.git
1、创建跳板机用户
先创建tianbanji用户及tiaobanji组,只有跳板机组的用户ssh登录时才登录到非shell的跳板机程序
useradd tiaobanji
usermod -s /sbin/nologin tiaobanji # 安全起见不允许tiaobanji用户登录系统
然后,通过本项目自带的add_user.sh来创建跳板机用户,脚本内容如下:
#!/bin/bash
###一键添加跳板机用户,并初始化用户,批量添加多个用户时,多个用户之间以空格分隔
###coding by laijingli2006@126.com at 20151019
#users=""
users="devops" # 这里是我自己修改的,这个脚本可以改成传用户名参数的脚本
user_group=tiaobanji
default_pass='123amdamd'
for user in $users ; do
echo $user;useradd $user
echo $default_pass|passwd --stdin $user
# chage -d 0 $user 作者强制用户登录修改密码,这里被我注释掉了,当然最好还是不要注释掉这行代码,强制用户首次登录就要修改密码。
usermod -G $user_group $user
done
执行 sh add_user.sh 即可添加一个devops的账户
2、设置跳板机用户登录后直接进入跳板机程序而非shell
在/etc/profile文件最后追加如下内容
id -nG|grep tiaobanji >/dev/null
user_in_tiaobanji_group=$?
if [ $user_in_tiaobanji_group = 0 ];then
shell_script_path=/backup/devops/devops/tiaobanji/tiaobanji.sh
log_file_name=/backup/log/$(whoami)_screen_tiaobanji_$(date %Y%m%d%H%M%S)
exec /usr/bin/script -q -t -c"$shell_script_path" 2>$log_file_name.date -a -f$log_file_name.log
fi
source/etc/profile
脚本的作用是,当发现用户组是tiaobanji的时候,修改他默认的shell界面,使用tiaobanji.sh来接管。
3、修改tiaobanji.sh
vi tiaobanji.sh
修改下ssh连接的服务器地址段,作者给出的例子是192.168.100网段的,我这里用的是192.168.2.X网段的,因此需要修改下脚本里的参数配置。
4、创建相关目录
mkdir -p /backup/log
mkdir -p /backup/devops/devops/tiaobanji
mv tiaobanji.sh /backup/devops/devops/tiaobanji
chmod 777 /backup/log/ -R
5、尝试登录
现在我们可以使用第一步创建的devops来登录跳板机。
ssh devops@192.168.2.11
登录到跳板机后,如下图所示:
根据提示输入IP的最后一段,然后输入用户名。即可登录。(通常服务器上是采用秘钥登录,有时候还会要输入秘钥的密码)
6、操作回放的功能
如果没有/usr/bin/scriptreplay 这个文件的话,需要安装下 yum install util-linux-ng
上一步中,我们在跳板机上通过ssh登录到192.168.2.12,随意执行几条命令,然后退出192.168.2.12。
然后到跳板机的/backup/log/ 目录下。可以看到一堆 .date .log的文件。
cd/backup/log/
scriptreplay devops_screen_tiaobanji_20161023193658.date devops_screen_tiaobanji_20161023193658.log 2
格式: scriptreplay time log 回放速率(大于1快进,小于1慢放,等于1正常播放)
7、跳板机的安全措施
- 修改默认ssh端口号,限制访问ssh访问的IP(只允许公司的IP访问)
- 禁用密码登录
- 只允许跳板机组里的用户登录到跳板机
- 跳板机ip段与业务ip段分离
- 建议对跳板机高可用(搞2台跳板机)
8、其他注意点
上面的操作,只适合演示环境下使用密码登录的情况。
线上环境通常都是使用秘钥登录的,秘钥登录的话,我们还需要做如下操作:
cd/home/devops/ # 这是我们新建账户的目录
mkdir .ssh && cd .ssh/
ssh-keygen -t rsa -f ./id_rsa
touch authorized_keys
chmod 644 authorized_keys
chmod 700 ../.ssh/
chown devops.devops ../.ssh/ -R
然后,还要把devops的id_rsa.pub这个公钥文件添加个各个主机上(这个可以使用salt来批量添加)
当然,最后别忘了要用xshell生成一对秘钥,然后把公钥追加到/home/devops/authorized_keys里面,不然devops就无法远程登录了。