13.1、前提条件:

1、跳板机服务器和其它服务器建立了ssh秘钥登录;

2、目前的环境:

(1)各服务器上都建立了lc用户,并给于sudo (lc ALL= NOPASSWD:ALL )权限,lc就可以看做是管理员;

(2)跳板机服务器和其它服务器建立了ssh秘钥登录,lc用户之间的;

(3)ssh已经优化,监听特定的网卡和端口,不允许root用户登录;

13.2、建立跳板机后门用户;

方便对跳板机服务器进行维护;

[root@m01 ~]# useradd -u501 lc1

[root@m01 ~]# echo 'lc1' | --stdin passwd 123456

[root@m01 scripts]# id lc1

uid=501(lc1) gid=501(lc1) 组=501(lc1)

13.3、建立脚本:

[root@m01 ~]# mkdir -p /server/scripts

1、跳板机脚本:

[root@m01 scripts]# cat jumpServer.sh

#!/bin/sh

export PATH=/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/lc/bin

function trapper () {

trap "" INT QUIT TSTP TERM HUP

}

function menu () {

cat <<EOF

################################HOST LIST########################################

# 1:172.16.1.41(backup) #

# 2:172.16.1.31(nfs01) #

# 3:172.16.1.8(web01) #

# q:exit-172.16.1.61(m01) #

#################################################################################

EOF

}

function host () {

case "$1" in

1)

ssh -p 52113 lc@172.16.1.41

;;

2)

ssh -p 52113 lc@172.16.1.31

;;

3)

ssh -p 52113 lc@172.16.1.8

;;

q)

exit 1

;;

*)

echo -e "\033[31m input error \033[0m"

;;

esac

}

function main () {

menu

trapper

while true; do

read -p "please choose you want to connect server:" num

host $num

done

}

main

2、限制用户连接(后门):

只允许root用户和后门用户lc1(UID=501)可以登录,其它用户只能在菜单界面上,

选择登录到其它服务器或者选择退出;

(1)脚本:

[root@m01 scripts]# cat access.sh

#!/bin/sh

export PATH=/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/lc/bin

if [ $UID -ne 0 -a $UID -ne 501 ]; then

. /server/scripts/jumpServer.sh

fi

[root@m01 scripts]# ln -s /server/scripts/access.sh /etc/profile.d/access.sh #开机自启的

#等价于在/etc/profile配置文件中添加“. /server/scripts/access.sh”配置参数;

[root@m01 scripts]# ls -l /etc/profile.d/access.sh

lrwxrwxrwx 1 root root 25 1月 27 21:09 /etc/profile.d/access.sh -> /server/scripts/access.sh

13.4、远程连接:

1、普通用户登录:

(1)提示:如果后期添加其它用户进行登录只需要把“/home/lc/.ssh/”目录下面的私钥拷贝到新建用户的“/home/username/.ssh/”目录

下面并修改为对应用户的权限即可;

2、后门用户登录:

13.5、trap命令:

1、trap命令介绍:

trap命令是内置的命令,需要使用help trap查看帮助。trap命令用于在接收到信号后将要采取的行动。trap

命令的一种常见用途是在脚本程序被中断是完成清理的工作;

2、trap语法:

trap -l:把所有的信号打印出来;

trap -p:把当前的trap设置打印出来;

trap " " signals:为空表示这个信号失效;

trap "commands" signals:收到signals指定的信号时,信号功能复位同时执行commands命令;

trap singals:没有命令部分,信号复原等价于 trap ":" singals或trap "true" singals;

3、查看系统信号:

[root@m01 ~]# trap -l

1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP

6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1

11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM

16) SIGSTKFLT 17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP

21) SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU 25) SIGXFSZ

26) SIGVTALRM 27) SIGPROF 28) SIGWINCH 29) SIGIO 30) SIGPWR

31) SIGSYS 34) SIGRTMIN 35) SIGRTMIN+1 36) SIGRTMIN+2 37) SIGRTMIN+3

38) SIGRTMIN+4 39) SIGRTMIN+5 40) SIGRTMIN+6 41) SIGRTMIN+7 42) SIGRTMIN+8

43) SIGRTMIN+9 44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13

48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12

53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9 56) SIGRTMAX-8 57) SIGRTMAX-7

58) SIGRTMAX-6 59) SIGRTMAX-5 60) SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-2

63) SIGRTMAX-1 64) SIGRTMAX

4、需要关注的信号:

该信号在命令行使用时会被忽略,在脚本中可以使用;

5、查看键盘对应的快捷键:

[root@m01 ~]# stty -a

speed 38400 baud; rows 47; columns 108; line = 0;

intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>; eol2 = <undef>; swtch = <undef>;

start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R; werase = ^W; lnext = ^V; flush = ^O; min = 1; time = 0;

-parenb -parodd cs8 -hupcl -cstopb cread -clocal -crtscts -cdtrdsr

-ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl ixon -ixoff -iuclc -ixany -imaxbel -iutf8

opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0

isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt echoctl echoke

6、设置信号:

在命令行设置的信号只在当前命令窗口临时有效;

(1)使ctrl+c系统信号失效:

[root@m01 ~]# trap "" 2 #后面可以接多个信号对应的数字或参数;

[root@m01 ~]# trap -p

trap -- '' SIGINT

[root@m01 ~]# 123 #此时使用ctrl+c命令无法强制退出;

[root@m01 ~]#

(2)设置ctrl+c的命令信号:

[root@m01 ~]# trap "echo -n 'you are typing ctrl+c'" 2

[root@m01 ~]# ^Cyou are typing ctrl+c

[root@m01 ~]# trap -p

trap -- 'echo -n '\''you are typing ctrl+c'\''' SIGINT

[root@m01 ~]# ^Cyou are typing ctrl+c

(3)复原ctrl+c的信号:

[root@m01 ~]# trap 2 #也可以使用trap ":" 2或是trap "true" 2;后面可以接多个信号对应的数字或参数;

[root@m01 ~]# 123^C

[root@m01 ~]#

8、trap应用案例:

(1)当程序运行完后自动清理产生的临时文件:

[root@m01 scripts]# vim test.sh

#!/bin/sh

trap "find /tmp -type f -name 'lc_*' | xargs rm -f && exit" 2

while :; do

touch /tmp/lc_$(date +%F_%T)

usleep 5000

done

[root@m01 scripts]# sh test.sh

^C[root@m01 scripts]# ls /tmp

test.txt

13.6、知识补充:

1、”:“命令:

空命令。

没有效果;命令什么也不做。

退出状态:

总是成功的。

while true = while :

2、彩色选项菜单:

function menu (){

echo -e "\033[5;31m \t\t\t\t WELCOME LC_JUMPSERVER \033[0m"

echo -e "\033[36m

####################################HOST LIST#####################################

# 1:172.16.1.41(backup) #

# 2:172.16.1.31(nfs01) #

# 3:172.16.1.8(web01) #

# q:172.16.1.61(exit-172.16.1.61(m01)) #

##################################################################################

\033[0m"

}

3、密码登录次数限制脚本:

[root@m01 scripts]# cat conn.sh

#!/bin/sh

export PATH=/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/lc/bin

echo "please enter the root password to get admimistrator privileges"

for i in {two,one,0};do

su - root

if [ $i != 0 ];then

echo "please input root password,now you hava $i chance"

fi

if [ $i = 0 ];then

echo "sorry you chance have use up"

exit 1

fi

done

最新文章

  1. seL4环境配置
  2. ie8兼容性(不支持trim 、readonly光标、乱码encodeURI())
  3. DHTMLX-Form
  4. ORACLE 监听日志文件太大停止写监听日志引起数据库连接不上问题
  5. mongodb(基础用法)
  6. 30个实例详解TOP命令
  7. 实现MVC4多级Views目录
  8. 【模拟】UVa 12108 - Extraordinarily Tired Students
  9. nc命令 (NetCat)
  10. golang 队列
  11. WdatePicker 日期控件- 功能及示例
  12. P3195 [HNOI2008]玩具装箱TOY(斜率优化dp)
  13. CentOS7(64)环境使用rpm命令安装gcc
  14. zookeeper集群迁移方案
  15. You Don&#39;t Know JS: Async &amp; Performance(第2章,Callbacks)
  16. Little-endian和Big-endian
  17. PHP生成页面二维码解决办法?详解
  18. Oracle快速测试连接是否成功
  19. VS和IE或者360兼容模式简单调试js方法
  20. BZOJ2243:[SDOI2011]染色——题解

热门文章

  1. [Linux] 删除find到的目录
  2. linux各文件夹的作用-(转自玉米疯收)
  3. Java安全之Cas反序列化漏洞分析
  4. C语言编程 菜鸟练习100题(41-50)
  5. devgridContral
  6. oepncv实现——图像去水印
  7. 【Python】神器:Streamlit,仅使用Python开发一个运维管理后台(不需要编写html,js,css)
  8. 中国摄像头CMOS需求潜力旺盛
  9. GPU与显卡
  10. 仅用CSS几步实现赛博朋克2077风格视觉效果