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系统进行安全的服务器管理
|
5月前
|
数据安全/隐私保护
xshell通过堡垒机连接服务器和winscp 通过堡垒机传输文件
【7 月更文挑战第 3 天】xshell通过堡垒机连接服务器和winscp 通过堡垒机传输文件
|
6月前
|
数据安全/隐私保护
|
7月前
|
运维 安全 网络安全
通过Xshell连接有跳板机/堡垒机的服务器
通过Xshell连接有跳板机/堡垒机的服务器
640 0
|
监控 Ubuntu 安全
在 Ubuntu 服务器上如何启用自动登录?
在 Ubuntu 服务器上如何启用自动登录?
281 0
在 Ubuntu 服务器上如何启用自动登录?
|
网络安全 数据安全/隐私保护
【JumpServer-初识篇】一键搭建JumpServer堡垒机、对接server服务器主机(下)
【JumpServer-初识篇】一键搭建JumpServer堡垒机、对接server服务器主机(下)
454 0
|
运维 Kubernetes 监控
【JumpServer-初识篇】一键搭建JumpServer堡垒机、对接server服务器主机(上)
【JumpServer-初识篇】一键搭建JumpServer堡垒机、对接server服务器主机
678 0
|
4天前
|
弹性计算 运维 安全
阿里云轻量应用服务器与ECS的区别及选择指南
轻量应用服务器和云服务器ECS(Elastic Compute Service)是两款颇受欢迎的产品。本文将对这两者进行详细的对比,帮助用户更好地理解它们之间的区别,并根据自身需求做出明智的选择。
|
5天前
|
SQL 弹性计算 安全
阿里云上云优选与飞天加速计划活动区别及购买云服务器后续必做功课参考
对于很多用户来说,购买云服务器通常都是通过阿里云当下的各种活动来购买,这就有必要了解这些活动的区别,同时由于活动内的云服务器购买之后还需要单独购买并挂载数据盘,还需要设置远程密码以及安全组等操作之后才能正常使用云服务器。本文就为大家介绍一下目前比较热门的上云优选与飞天加速计划两个活动的区别,以及通过活动来购买云服务器之后的一些必做功课,确保云服务器可以正常使用,以供参考。
|
8天前
|
弹性计算 安全 开发工具
灵码评测-阿里云提供的ECS python3 sdk做安全组管理
批量变更阿里云ECS安全组策略(批量变更)
下一篇
DataWorks