用shell写一个自动ssh远程连接的脚本,远程主机名admin,密码123
时间: 2023-02-06 11:50:14 浏览: 72
您可以使用如下脚本来自动 ssh 远程连接:
```bash
#!/bin/bash
# 设置远程主机名
remote_host=admin
# 设置密码
password=123
# ssh 连接远程主机
sshpass -p "$password" ssh "$remote_host"
```
请注意,这个脚本使用了 sshpass 工具,如果你的系统没有安装 sshpass,请先安装:
```bash
sudo apt install sshpass
```
在执行脚本之前,请确保您已经在本地主机上生成了 ssh 密钥对,并将公钥拷贝到远程主机的 `~/.ssh/authorized_keys` 文件中。这样,你就可以在脚本中省略密码,并使用密钥对进行认证,从而更安全地连接远程主机。
相关问题
实现一个shell脚本实现ssh-copy-id批量自动发送公钥到远程主机
要实现一个shell脚本来批量自动发送公钥到远程主机,首先需要编写一个能够自动输入密码的ssh-copy-id脚本。这个脚本可以通过循环遍历存储了目标远程主机IP的列表,然后使用ssh-copy-id命令自动将本地公钥发送到远程主机上。
首先,我们可以创建一个存放目标远程主机IP的文本文件,比如叫做hostlist.txt。然后我们可以编写一个shell脚本,比如叫做auto_ssh_copy_id.sh。在这个脚本中,我们可以使用一个for循环来逐个读取hostlist.txt中的IP地址,并对每个IP地址执行ssh-copy-id命令来发送公钥。
在for循环中,我们可以使用sshpass命令来自动输入密码,这样就可以避免手动输入密码的步骤。脚本的大致流程可以是先使用sshpass输入密码登录远程主机,然后再执行ssh-copy-id命令来发送公钥。完成后,再循环至下一个IP地址,直到hostlist.txt中的所有IP地址都被处理完毕。
最后,我们可以将这个shell脚本赋予可执行权限,并在终端中运行它。这样就能够批量自动发送公钥到远程主机了。这个方法可以节省大量时间,同时也更加方便和高效。
写一个 shell利用expect自动连接ssh执行服务器端脚本文件
很高兴回答你的问题,这是一道关于使用Shell和Expect连接SSH并执行服务器端脚本文件的问题。下面是一个基本的示例脚本,可以根据你的具体情况进行修改:
```
#!/usr/bin/expect
set timeout -1
set user "your_username"
set password "your_password"
set host "your_host"
set script "your_script.sh"
spawn ssh $user@$host
expect {
"*password:" {
send "$password\r"
exp_continue
}
"Permission denied*" {
exit 1
}
"$ " {
send "sh $script\r"
expect {
"$ " {
send "exit\r"
exit 0
}
eof {
exit 0
}
}
}
eof {
exit 0
}
}
```
在这个脚本中,使用了Expect来等待不同的SSH输出并自动响应。首先,通过`spawn`命令启动SSH连接,然后Expect等待输入密码。如果成功连接,脚本会发送指令访问服务器端脚本文件并执行。执行完毕后,脚本会退出连接。
希望能够帮到你,如果有其他问题可以继续问我哦!
阅读全文