之前介绍过两种快速ssh登录的方法 ssh免密码登陆, ssh自动登录。
这里再介绍一种方法,其实原理是基于linux expect (自动交互) ,ssh自动登录 的,只不过expect脚本是由xshell来执行的。
一般来说如果是静态密码登录的话,xshell是可以保存的,如果登录需要用动态密码的话,那么也可以使用 public key 进行登录。
那么xshell自动登录应用在什么地方呢?
请看下面的这张图:
一般来说应用在二次登录上,因为一般来说在正式开发环境想要登录服务器进行开发都是需要用跳板机转发的,而且通常跳板机基本上权限很低而且很多东西都没有 例如 expect。
所以每次想进入到编译机首先得输入跳板机的密码,然后再输入编译机的密码。
虽然跳板机的密码可以通过public key 或者保存密码解决,但是从跳板机到编译机的过程还是需要输入一次密码,所以每次都很麻烦。
这里介绍一下利用xshell的登录脚本配置来解决此种问题:
- 在xshell中新建一个连接到跳板机,然后使用保存密码或者public key的方式完成一键到跳板机的配置。
-
打开属性窗口,选中登录脚本
然后勾选,执行以下等待并发送规则对于每一条规则来说,“等待”栏里填写的就是console界面期望出现的字符串,“发送”栏里填写的就是一旦出现了对应的字符串,就发送文本到console中。
所以我们可以这样子填
Expect | Send |
---|---|
$ |
ssh user_name@ip |
passwdord |
yourpassword |
这样子的话,当你成功连接跳板机,出现了 $
的提示符之后,就会执行ssh user_name@ip
,这里填编译机的用户名和ip,然后执行这条命令之后,会出现user_name's password:
的提示字样,然后现在会自动输入密码了。
这样子就完成了一键到编译机的登录。
但是如果有需要从跳板机到其他机器怎么办呢?
这里可以在xshell中多建几条连接,每条连接都是先上跳板机,然后待 $
提示符出现之后,再执行不同的命令去到不同的机器。
也可以在编译机上编写expect脚本去到不同的机器。