開發企業級shell跳板機案例。要求使用者登入到跳板機僅能執行管理員給定的選項動作,不允許以任何形式中斷指令碼到跳板機伺服器上執行任何系統命令。
下面的命令在所有的機器上操作:
[root@jump ~]# useradd zhouhao
[root@jump ~]# echo 123456 | passwd --stdin zhouhao
[root@test ~]# useradd zhouhao
[root@test ~]# echo 123456 | passwd --stdin zhouhao
以下操作命令僅在跳板機上操作:
[root@jump ~]# su - zhouhao
[root@jump ~]# ssh-keygen -t dsa -p '' -f ~/.ssh/id_dsa >/dev/null 2>&1 #<==生成金鑰對
[root@jump ~]# ssh-copy-id -i ~/.ssh/id_dsa.pub#<==將公鑰分發到其他伺服器。
#如果ssh埠 不是22 ,可以使用 -p引數 如下:
[root@jump ~]# ssh-copy-id -i ~/.ssh/id_dsa.pub "-p 5180 伺服器ip"
2) 實現傳統的遠端;連線選單選擇指令碼。
選單指令碼如下:
cat <3) 利用 linux 訊號防止使用者中斷訊號在跳板機上操作.
trap ':' int exit tstp term hup #<==遮蔽這些訊號。< code="">}
4) 使用者登入跳板機後即呼叫指令碼(不能命令列管理跳板機),並只能按照管理員的要求選單。
以下為實戰內容:
指令碼放在跳板機上:
4.1 將pofifle.d目錄下建立,登入使用者就自動執行的jump.sh 指令碼
[root@jump ~]# echo '[ $uid -ne 0 ] && . /server/scripts/jump.sh'>/etc/profile.d/jump.sh
[root@jump ~]# cat /etc/profile.d/jump.sh
#!/bin/sh
[ $uid -ne 0 ] && . /server/scripts/jump.sh
#判斷如果不是root使用者,就執行jump.sh,然後呼叫/server/scripts/jump.sh指令碼
[root@jump ~]# mkdir -p /server/scripts/
[root@jump ~]# cd /server/scripts/
4.2 編寫跳板機主指令碼
[root@jump scripts]# cat jump.sh
#!/bin/bash
trap ':' int exit tstp term hup #定義需要遮蔽的訊號,冒號表示啥也不做
}main(){
while :
do clear
cat<執行效果如下:
[root@jump ~]# su - zhouhao
1)lb01-192.168.1.3
pls input a num.:1 #<==選1進入lb01 伺服器。
login in lb01.
last login: mon oct 14 14:02:25 2019 from 192.168.1.5
[zhouhao@h1 ~]$ #<==按ctrl+d退出到跳板機伺服器再次彈出選單。
1)lb01-192.168.1.3
pls input a num.:110 #<==選110進入跳板機命令提示符。
your birthday:0306 #<==需要輸入特別碼才能進入的,這裡管理員通道,密碼要保密呦。
[root@jump ~]# #<==跳板機管理命令列。
shell 跳板機便捷增加使用者及設定密碼
我的需求 因網路限制,某些客戶機ssh到伺服器都得使用跳板機進行轉一下,每次幫開帳戶,不麻煩不難,但總覺得還可以再優。不多說,直接放shell。很簡單 bin bash test add user and set passwd username 1 adduser log data1 useradd...
shell 跳板機便捷增加使用者及設定密碼
我的需求 因網路限制,某些客戶機ssh到伺服器都得使用跳板機進行轉一下,每次幫開帳戶,不麻煩不難,但總覺得還可以再優。不多說,直接放shell。很簡單 bin bash test add user and set passwd username 1 adduser log data1 useradd...
自動化指令碼登入跳板機和伺服器
通過跳板機,兩步驗證登入伺服器,示例 如下 usr bin expect set timeout 5 set jump server 127.0.0.1 set port 8080 set username test set userpasswd test set verifycode lindex...