通过ssh信任实现无密登录(脚本实现)

应用场景

当想通过一个节点(eg:一台Linux系统的pc),批量控制多个节点,实现批量操作时,ssh 信任是一个好的解决办法。例如博主通过一个主节点,执行ssh信任批量脚本后,可以实现以后批量无密控制操作几十到上百个子节点。

 

#!/bin/bash
##默认创建rsa密钥对在root的用户目录下
if [ "$1" != "hostip" ];then
echo please add hostip arguments file....Run again!!
exit 1
fi

dir=`pwd`
if [ ! -f ${dir}/hostip ];then
echo user file argument not exit....
exit 1
fi

user_name=`whoami`
echo $user_name.......
if [ $user_name != "root" ];then
echo please swith rootUser....
exit 1
fi
#进入root用户目录 
cd ~
ssh-keygen -t rsa
echo "ssh-rsa secretKes created......"

for host in `cat ${dir}/hostip`
do
        cd ~/.ssh
        scp id_rsa.pub root@$host:/root
        ssh -p 22 root@$host "if [ ! -d "/root/.ssh" ];then mkdir /root/.ssh;fi;cd ~;cat id_rsa.pub >> ~/.ssh/authorized_keys"
done

 

使用方法

选定一个主节点(控制节点),将使用的脚本和参数文件放到主节点的同一个目录下,参数文件内容是要控制的子节点的主机IP。

eg:hostip 参数文件内容如下

192.178.3.3
192.178.3.4
192.178.3.5
192.178.3.6
192.178.3.9
192.178.3.10
192.178.3.11
192.178.3.12
192.178.3.13
192.178.3.15
192.178.3.16
192.178.3.17
192.178.3.19
192.178.3.20
192.178.3.2

使用方式 ./ssh_believe.sh hostip

Warning:如果要分批次去执行ssh_believe.sh(ssh信任脚本)时,因为本地密钥已经生成,如果再选择生成的话,和以前的密钥就不配对了,所以选择不覆盖

 

转载于:https://www.cnblogs.com/YLei90/p/9405295.html

Shell脚本实现SSH登录通常涉及到使用SSH命令和可能的密码输入或密钥认证。一种常见的方法是使用sshpass工具,它允许你在命令中直接提供密码。不过,需要注意的是,使用明文密码并不是一个安全的做法,所以更推荐使用SSH密钥认证方式。 以下是使用SSH密钥认证的一个简单示例: 1. 首先确保本地机器和目标机器之间建立了SSH密钥认证。这意味着你需要在本地机器生成一对密钥,并将公钥复制到远程机器的`~/.ssh/authorized_keys`文件中。 2. 然后,你可以创建一个shell脚本来通过SSH连接到远程机器。使用密钥认证,你不需要在脚本中输入密码。 ```bash #!/bin/bash # 目标服务器的用户名和地址 USERNAME="your_username" REMOTE_HOST="your_remote_host" REMOTE_COMMAND="ls -l" # 使用ssh连接到远程服务器执行命令 ssh "$USERNAME@$REMOTE_HOST" "$REMOTE_COMMAND" ``` 如果你确实需要使用密码,可以使用sshpass工具: ```bash #!/bin/bash # 目标服务器的用户名和地址 USERNAME="your_username" REMOTE_HOST="your_remote_host" PASSWORD="your_password" REMOTE_COMMAND="ls -l" # 使用sshpass和ssh进行密码认证的SSH连接 sshpass -p "$PASSWORD" ssh "$USERNAME@$REMOTE_HOST" "$REMOTE_COMMAND" ``` 请记住,使用sshpass可能带来安全风险,因为它需要在脚本中明文存储密码。确保对包含密码的脚本进行适当的安全处理,例如限制脚本的读取权限。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值