[Linux]用户登录后自动ssh到其他服务器

为了限制用户行为,当特定用户登入服务器时,shell会自动运行命令,并且用户取消命令也会导致用户的登出。如实现堡垒机功能,用户在登入后只能选择ssh目标并输入用户名与密码,并且没有shell命令输入的能力。

本功能实现原理是将用户的shell指定为一个特定脚本,因此脚本结束时用户也会退出登录。

本例中修改用户jump(root用户视角)

新建用户:

adduser jump # 首先新建用户,并设定密码
mkdir /home/jump/bin # 新建用于储存脚本的目录,非必要

新建脚本:

vi /home/jump/bin/login.sh

脚本(login.sh)内容:

#!/bin/sh
clear # 清空屏幕
stty erase ^H # 用户输入Backspace按键会清除^H符号
stty kill ^U # 用户输入 Ctl+U 会清除本行
echo "请输入ssh目标地址:"
read targethost # 读取用户输入存入 targethost
echo "请输入用户名:"
read username # 读取用户输入存入 username
/usr/bin/ssh $targethost -l $username

注意几点:

  • ^H的输入需要按键按下Ctl+v 然后输入Ctl+Backspace
  • ^U的输入需要按键按下Ctl+v 然后输入Ctl+u

赋予脚本执行权限:

chmod u+x /home/jump/bin/login.sh

修改用户组:

chown jump:jump -R /home/jump/bin

最后需要将用户的shell指定为这个脚本,打开/etc/passwd,修改用户的哪一行

修改前:

jump:x:1004:1004:,,,:/home/jump:/bin/bash

修改后:

jump:x:1004:1004:,,,:/home/jump:/home/jump/bin/login.sh

此时用户登入后会自动执行脚本内容,且取消脚本会登出。

你可能感兴趣的:([Linux]用户登录后自动ssh到其他服务器)