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 参数
传入密码- 我加了代理的,加不加视情况而定
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现