无密钥登录的自动脚本实现(ssh-copy-id、expect免交互输入脚本)

简介:

无密钥登录的自动脚本实现:

vim auto_ssh.sh


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#!/usr/bin/expect  
set  timeout 10  
set  username [lindex $argv 0]  
set  password [lindex $argv 1]  
set  hostname  [lindex $argv 2]  
spawn  ssh -copy- id  -i  /root/ . ssh /id_rsa .pub $username@$ hostname
expect {
             #first connect, no public key in ~/.ssh/known_hosts
             "Are you sure you want to continue connecting (yes/no)?"  {
             send  "yes\r"
             expect  "password:"
                 send  "$password\r"
             }
             #already has public key in ~/.ssh/known_hosts
             "password:"  {
                 send  "$password\r"
             }
             "Now try logging into the machine"  {
                 #it has authorized, do nothing!
             }
         }
expect eof


chmod 777 auto_ssh.sh

然后执行下述命令即可。

./auto_ssh.sh root 123456 192.168.10.162


试验结果:

wKiom1klMCGgzj0sAACPw4PUgOs899.png

wKioL1klMDvTg1aoAABpCUnrHTA028.png

wKioL1klMFfRKBtLAAAz70ZR7go348.png

162机器上传看:

wKiom1klMH6D4usOAAAOCIUwYak156.png

wKioL1klMJWwv8U0AACeE4US8_M575.png

成功!


# cat ip.txt
192.168.191.166
192.168.191.167
192.168.191.168
192.168.191.169

# cat ip-pass.txt
192.168.191.166 password1
192.168.191.167 password2
192.168.191.168 password3
192.168.191.169 password4


删除历史访问秘钥信息,以免有变:

for i in `cat ip.txt`;do sed -i '/'$i'/d' ~/.ssh/known_hosts;done

批量添加互信服务器:

while read IP PASS;do ./auto_ssh.sh root $PASS $IP;done < ip-pass.txt
















本文转自leonardos51CTO博客,原文链接: http://blog.51cto.com/leomars/1928994,如需转载请自行联系原作者



相关文章
|
4天前
|
安全 Linux 网络安全
CentOS 8下SSH连接超时与“无法加载主机密钥”错误的排查与修复
在CentOS 8系统中,宝塔面板提示“出错了,面板运行时发生错误”,导致插件无法正常显示。同时,SSH连接超时,修复面板功能失效。通过VNC连接排查,发现SSH服务安装和配置问题频发,最终通过重装SSH、调整权限并重新生成主机密钥文件解决问题,成功恢复SSH连接。
73 16
|
3月前
|
监控 Ubuntu 安全
debian或Ubuntu中开启ssh允许root远程ssh登录的方法
在Debian或Ubuntu系统中启用root用户的SSH远程登录需要编辑SSH配置文件、设置root密码并重启SSH服务。虽然这可以在某些情况下提供便利,但必须注意安全性,通过使用强密码、限制IP访问、使用SSH密钥认证等方法来保护服务器的安全。
1111 5
|
7月前
|
JavaScript 应用服务中间件 Linux
【应用服务 App Service】解决无法从Azure门户SSH登录问题
【应用服务 App Service】解决无法从Azure门户SSH登录问题
|
5月前
|
大数据 网络安全 数据安全/隐私保护
大数据-03-Hadoop集群 免密登录 超详细 3节点云 分发脚本 踩坑笔记 SSH免密 集群搭建(二)
大数据-03-Hadoop集群 免密登录 超详细 3节点云 分发脚本 踩坑笔记 SSH免密 集群搭建(二)
218 5
|
5月前
|
XML 大数据 网络安全
大数据-03-Hadoop集群 免密登录 超详细 3节点云 分发脚本 踩坑笔记 SSH免密 集群搭建(一)
大数据-03-Hadoop集群 免密登录 超详细 3节点云 分发脚本 踩坑笔记 SSH免密 集群搭建(一)
123 4
|
7月前
|
机器学习/深度学习 存储 Linux
【机器学习 Azure Machine Learning】使用VS Code登录到Linux VM上 (Remote-SSH), 及可直接通过VS Code编辑VM中的文件
【机器学习 Azure Machine Learning】使用VS Code登录到Linux VM上 (Remote-SSH), 及可直接通过VS Code编辑VM中的文件
|
7月前
|
安全 Shell Linux
如何禁止某个用户使用ssh登录
本文介绍了五种禁止用户通过SSH登录的方法:1) 修改`/etc/ssh/sshd_config`文件中的`DenyUsers`和`DenyGroups`来阻止特定用户或用户组登录;2) 将用户的默认shell设置为`/usr/sbin/nologin`或`/bin/false`以禁用其SSH访问;3) 利用PAM(可插入认证模块)通过编辑`/etc/security/sshd.conf`来限制登录权限;4) 通过编辑`/etc/hosts.deny`文件拒绝特定用户的SSH访问;5) 锁定或禁用用户账号以阻止所有类型的登录。每种方法都提供了详细的步骤指导。
948 1
|
7月前
|
存储 安全 测试技术
【超实用却暗藏杀机】sshpass:一键免密SSH登录的神器,为何生产环境却要敬而远之?探秘背后的安全隐患与替代方案!
【8月更文挑战第16天】sshpass 是一款便捷工具,可实现自动化SSH登录,简化脚本中的远程连接流程。通过后台自动处理密码输入,便于执行远程操作,如 `sshpass -p &#39;yourpassword&#39; ssh user@remotehost`。也可结合更多SSH选项使用,例如指定私钥文件。然而,因需明文传递密码,存在较大安全隐患,不适于生产环境;推荐使用公钥认证以增强安全性。
468 4
|
7月前
|
网络安全
mac下通过ssh脚本实现免账号密码连接运服务器
mac下通过ssh脚本实现免账号密码连接运服务器
79 3
|
7月前
|
存储 安全 算法
如何使用 PuTTY 创建 SSH 密钥以连接到 VPS
如何使用 PuTTY 创建 SSH 密钥以连接到 VPS
167 2