专栏首页ACM小冰成长之路脚本链接 ssh 自动输入密码

脚本链接 ssh 自动输入密码

首先安装 expectexpectexpect,因为默认是没有安装这个的,UbuntuUbuntuUbuntu 系统可以直接通过 sudo apt−get install expectsudo\ apt-get\ install\ expectsudo apt−get install expect 来安装,然后写好 expectexpectexpect 脚本,假如说叫做 login−via−sshlogin-via-sshlogin−via−ssh,如果脚本没有参数的话,直接 expect login−via−sshexpect\ login-via-sshexpect login−via−ssh 就可以了,注意必须用 expectexpectexpect 来运行这个脚本,其他 shellshellshell 工具是无法解析这个脚本的。

不过我这里写的 login−via−sshlogin-via-sshlogin−via−ssh 脚本有一些参数:

Usage: expect login-via-ssh username password hostname realip script

主要功能是通过 sshsshssh 链接到用户名为 usernameusernameusername,密码为 passwordpasswordpassword 的服务器,服务器的主机名叫做 hostnamehostnamehostname,真实的 IPIPIP 地址为 realiprealiprealip,链接到这个服务器后执行 scriptscriptscript 脚本。

#!/usr/bin/expect -f

set timeout 10
set username [lindex $argv 0]
set password [lindex $argv 1]
set hostname [lindex $argv 2]
set realip   [lindex $argv 3]
set script   [lindex $argv 4]

spawn ssh -l $username $realip "echo '$password' | sudo -S ~/$script $hostname"

expect {
    "(yes/no)?" {
        send "yes\n"
        expect "password:"
        send "$password\n"
    }
    "password:" {
        send "$password\n"
    }
}

interact

这里用来实现自动输入的是 expectexpectexpect 部分,当检测到 (yes/no)?(yes/no)?(yes/no)? 的时候,会自动输入 yesyesyes,检测到 password:password:password: 时会自动输入 passwordpasswordpassword。

另外,spawnspawnspawn 后双引号里的内容,是要在 sshsshssh 远程链接到的服务器上执行的,因为 sudosudosudo 权限需要键入密码,所以通过 echoechoecho 的方式来进行自动输入密码。

说到这里,就不得不说的是,常见的自动输入密码的方法有三种,但是对于 sshsshssh 和 scpscpscp 这种命令只能通过 expectexpectexpect 来进行自动输入密码的操作。

xscpxscpxscp 脚本:

#!/usr/bin/expect -f
# Usage: expect xscp a b c

set timeout 10
set source [lindex $argv 0]
set target [lindex $argv 1]
set passwd [lindex $argv 2]

spawn scp $source $target

expect {
    "(yes/no)?" {
        send "yes\n"
        expect "password:"
        send "$passwd\n"
    }
    "password:" {
        send "$passwd\n"
    }
}

interact

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 利用SSH隧道加密、隐蔽C&C通信流量

    在网络攻防博弈中,网络流量特征分析类安全防御措施得到了广泛应用。众多厂商和企业对网络流量进行恶意流量分析检测,从而针对性的采取防御措施,如各级ISP在骨干网络设...

    FB客服
  • 详述 iTerm2 配色及免密登录 SSH 的方法

    博主说:iTerm2 是一个 Mac 版的类似于 Xshell 的终端工具,虽然很多同学说其功能并没有 Xshell 那么强大,但它仍然能够满足我们的大部分需...

    CG国斌
  • 面试官:哥们儿,你做过linux服务器间的文件搬运程序么?

    解决linux服务器间的数据、文件搬运和免密登录等问题; 从多种业务环境入手,以不同方式实现服务器间的文件传输;

    陈哈哈
  • Linux常见的持久化后门汇总

    持久化后门是指当入侵者通过某种手段拿到服务器的控制权之后,通过在服务器上放置一些后门(脚本、进程、连接之类),来方便他以后持久性的入侵,简单梳理一下日常...

    7089bAt@PowerLi
  • Linux常见的持久化后门汇总

    持久化后门是指当入侵者通过某种手段拿到服务器的控制权之后,通过在服务器上放置一些后门(脚本、进程、连接之类),来方便他以后持久性的入侵,简单梳理一下日常...

    洛米唯熊
  • 一步步使SSH连接您的github仓库

    版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。

    Jerry Wang
  • Ubuntu Server 第七章 远程管理

    我笔记是直接从苑老师的第二章开始写的:-D,有朋友可能不了解链接终端的方式。目前我本地是Vmware 虚拟机 + Xshell SSH链接。关于SSH,不仅仅做...

    天钧
  • 权限维持之Linux后门

    在渗透过程中拿到目标权限只是开始,通常会留下后门以便再次访问(简称APT)。因此需要进行权限维持,隐藏后门。本文将对Linux下常见的权限维持后门技术进行解析,...

    贝塔安全实验室
  • 如何正确配置 Ubuntu 14.04 服务器?

    本文将介绍在云厂商购买 Ubuntu 服务器之后,为了确保服务器的安全,开发者应该要做的一些配置。完成本文的操作之后,服务器的安全性将得到更好的保障。

    EarlGrey

扫码关注云+社区

领取腾讯云代金券