iTerm通过堡垒机自动登录服务器

简介: 为了保障网络和数据安全,越来越多公司使用堡垒机。iTerm作为一个好用的终端利器,要实现自动通过堡垒机登录服务器的方式有多种。下面我就来介绍一种通过expect脚本的方式完成配置。第一步,进入/usr/local/bin目录,新建remote.

为了保障网络和数据安全,越来越多公司使用堡垒机。iTerm作为一个好用的终端利器,要实现自动通过堡垒机登录服务器的方式有多种。下面我就来介绍一种通过expect脚本的方式完成配置。

第一步,进入/usr/local/bin目录,新建remote.exp文件,文件内容如下:

//remote.exp文件内容

#!/usr/bin/expect
set jumpusr [lindex $argv 0]
set jumphost [lindex $argv 1]
set usr [lindex $argv 2]
set host [lindex $argv 3]

catch {spawn ssh -l $jumpusr $jumphost}

expect "*$jumphost*" { send "ssh -l $usr $host\r" }
expect "*$host*" { send "cd ~\r"; interact }

第二步,执行下面命令,修改文件属性为可执行

chmod 777 remote.exp 

第三步,在iTerm中测试刚才的程序。测试命令格式如下:

// user1为登录堡垒机的用户名    
// host1为堡垒机IP地址    
// user2为登录目标服务器的用户名    
// host2为目标服务器的IP地址 

remote.exp user1 host1 user2 host2

如:remote.exp xiaowang 123.4.56.78 hadoop 132.45.6.89
执行命令后,直接进入目标服务器。如果没有成功检查自己是否有堡垒机和目标服务器权限

第四步,配置iTerm
在iTerm中打开 Preferences -> Profiles -> General, 点击左侧底部“+”增加配置。
img_afdb1b2d1855773ae942389da93a6017.jpe

配置完成后,点击菜单栏的profiles,即可看到添加的快捷入口,点击入口即可快速登录相应的服务器。这种方法默认从new tab打开服务器。
img_ccd03025651c190563d8084c2f821fb9.png

也可点击快捷点“command+O”打开profiles窗口,选择入口和打开方式登录服务器。这种方法可选择从水平分割、垂直分割、新tab、新窗口方式打开。
img_9547ceea22974dcd00d8d63a2e782403.png

后续,如需要增加新的堡垒机和服务器登录,只需在iTerm的profiles中增加新的配置即可。

注:文中显示的IP地址均为虚构地址,如有雷同请联系我修改。

 


 

remote.exp文件内容详解:

#!/usr/bin/expect
set jumpusr [lindex $argv 0]
set jumphost [lindex $argv 1]
set usr [lindex $argv 2]
set host [lindex $argv 3]

catch {spawn ssh -l $jumpusr $jumphost}

expect "*$jumphost*" { send "ssh -l $usr $host\r" }
expect "*$host*" { send "cd ~\r"; interact }

#!/usr/bin/expect, 指定用来执行该脚本的命令程序,这里的expect类似linux下的bash、windows下的cmd。注意:这行必须在第一行。

set jumpusr [lindex $argv 0], 获取执行脚本时传入的参数(参数保存在$argv中,从0号开始是参数),并将第0个参数保存到变量jumpusr中。

spawn ssh -l $jumpusr $jumphost, spawn是进入expect环境后才可以执行的expect内部命令,如果没有装expect或者直接在默认的SHELL下执行是找不到spawn命令的,所以不要用 “which spawn“之类的命令去找spawn命令。好比windows里的dir就是一个内部命令,这个命令由shell自带,你无法找到一个dir.com 或 dir.exe 的可执行文件。
spawn主要的功能是给ssh运行进程加个壳,用来传递交互指令。

expect "*$jumphost*" { send "ssh -l $usr $host\r" }, 这里的expect也是expect的一个内部命令,这个命令的意思是判断上次输出结果里是否包含$jumphost(堡垒机地址)的值的字符串,如果有,执行‘ssh -l $usr $host\r’

expect "*$host*" { send "cd ~\r"; interact }, 判断上次输出结果里是否包含$host(目标服务器地址)的值的字符串,如果有,进入服务器用户目录,并保持交互动作。

interact, 执行完成后保持交互状态,把控制权交给控制台,这个时候就可以手工操作了。如果没有这一句登录完成后会退出,而不是留在远程终端上。

expect命令参考链接:http://www.cnblogs.com/lixigang/articles/4849527.html

 
 
 
 
 
 

目录
相关文章
|
运维 安全 Linux
实现远程访问Linux堡垒机:通过JumpServer系统进行安全的服务器管理
实现远程访问Linux堡垒机:通过JumpServer系统进行安全的服务器管理
|
4月前
|
数据安全/隐私保护
xshell通过堡垒机连接服务器和winscp 通过堡垒机传输文件
【7 月更文挑战第 3 天】xshell通过堡垒机连接服务器和winscp 通过堡垒机传输文件
|
5月前
|
数据安全/隐私保护
|
6月前
|
运维 安全 网络安全
通过Xshell连接有跳板机/堡垒机的服务器
通过Xshell连接有跳板机/堡垒机的服务器
440 0
|
监控 Ubuntu 安全
在 Ubuntu 服务器上如何启用自动登录?
在 Ubuntu 服务器上如何启用自动登录?
259 0
在 Ubuntu 服务器上如何启用自动登录?
|
网络安全 数据安全/隐私保护
【JumpServer-初识篇】一键搭建JumpServer堡垒机、对接server服务器主机(下)
【JumpServer-初识篇】一键搭建JumpServer堡垒机、对接server服务器主机(下)
408 0
|
运维 Kubernetes 监控
【JumpServer-初识篇】一键搭建JumpServer堡垒机、对接server服务器主机(上)
【JumpServer-初识篇】一键搭建JumpServer堡垒机、对接server服务器主机
634 0
|
19天前
|
弹性计算 网络安全
阿里云国际OpenAPI多接口快速管理ECS服务器教程
阿里云国际OpenAPI多接口快速管理ECS服务器教程
|
2天前
|
弹性计算
阿里云2核16G服务器多少钱一年?亲测价格查询1个月和1小时收费标准
阿里云2核16G服务器提供多种ECS实例规格,内存型r8i实例1年6折优惠价为1901元,按月收费334.19元,按小时收费0.696221元。更多规格及详细报价请访问阿里云ECS页面。
26 9
|
2天前
|
弹性计算 异构计算
2024年阿里云GPU服务器多少钱1小时?亲测价格查询方法
2024年阿里云GPU服务器每小时收费因实例规格不同而异。可通过阿里云GPU服务器页面选择“按量付费”查看具体价格。例如,NVIDIA A100的gn7e实例为34.742元/小时,NVIDIA A10的gn7i实例为12.710156元/小时。更多详情请访问阿里云官网。
26 2