ssh自动输入密码自动登录

  • 如果是密钥登录的话还比较好自动登录,如果是密码登录的话一般用expect,还可以使用sshpass

expect

  • expect是一个用来处理交互的命令。借助Expect,我们可以将交互过程写在一个脚本上,使之自动化完成。形象的说,ssh登录,ftp登录等都符合交互的定义。下文我们首先提出一个问题,然后介绍基础知四个命令,最后提出解决方法。

  • expect中最关键的四个命令是send,expect,spawn,interact。

    • send:用于向进程发送字符串
    • expect:从进程接收字符串
    • spawn:启动新的进程
    • interact:允许用户交互
  • 如果没有expect,可以先安装,Ubuntu安装命令如下:

sudo apt install expect
  • centos
yum  install expect
  • 自动登录脚本auto-login.exp
#!/usr/bin/expect
set timeout 102
set user [lindex $argv 0] 
set ip [lindex $argv 1]
#set password [lindex $argv 2]
set password 123456
spawn ssh  -o "ProxyCommand=nc -x 127.0.0.1:1080 %h %p"   -o "ServerAliveInterval=10"  $user@$ip
#spawn ssh     -o "ServerAliveInterval=10"  $user@$ip
expect {
"yes/no" {send "yes\r"; exp_continue}
"password:" {send "$password\r"}
}
interact

  • 注意我这里用了代理登录的-o "ProxyCommand=nc -x 127.0.0.1:1080 %h %p" 看自己情况需不需要这个参数; -o "ServerAliveInterval=10" 是发心跳间隔时间多少秒。
  • 下面的expect yes/no 如果出现了yes/no就输入yes\r ;同理如果出现了password:就输入自己的密码加\r
  • 使用
expect auto-login.exp 用户名  ip

在这里插入图片描述

sshpass

  • Ubuntu安装
sudo apt install sshpass
  • centos/redhat安装
yum install sshpass
  • 源码安装
 wget http://sourceforge.net/projects/sshpass/files/latest/download -O sshpass.tar.gz
 tar -xvf sshpass.tar.gz
 cd sshpass-1.06
 ./configure
sudo make install 
  • 这个命令也非常舒服sshpass+ssh
 sshpass -p 'xxxxxx'  ssh -o ProxyCommand="nc -X 5 -x 127.0.0.1:1080 %h %p" -o ServerAliveInterval=60  root@xx.xx.xx.xx
  • -p 参数传入密码
  • 我加了代理的,加不加视情况而定
    在这里插入图片描述

posted on   愤怒的苹果ext  阅读(277)  评论(0编辑  收藏  举报

编辑推荐:
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示