宝塔内 计划任务更新远程主机的时间

很多情况下一些主机无法上网,长此以往有可能让系统内的时间混乱 ,这是一个很愁人的事情
这里我们找了一个可以通过宝塔的计划任务或 cron 不断将本地时间通过ssh登录,并在登录状态下设置时间的方法.找了很多方案都不行 .最终采用了私钥登录的方案
1使用宝塔的计划任务:
需要知道计划任务是由谁执行的,首先需要强调的是宝塔执行计划任务,一般是由root执行计划任务,我们可以在计划任务中执行下面的bash来了解我是谁.

echo $(whoami)  #在计划任务中输入语句,并执行查看结果,很有可能是root

现在知道了我们要用root来执行计划任务,那么登录者比认识root,而我们的ubuntu默认root账户没有启用
2 解除root登录
一般情况下root并没有启用.启用方法如下

sudo usermod root -p password
sudo passwd root  #输入root的密码  

设置好密码之后登录root,下一步就是生成密钥

3 为了启用私钥登录.需要在本地主机和远程主机保持密钥
在本地主机生成密钥

ssh-keygen -t rsa -b 4096 #本地生成密钥位置在 /home/用户名/.ssh/内,如果时root账户 那么位置为/root/.ssh/ 

/home/用户名/.ssh文件夹(或/root/.ssh文件夹)下回有两个文件 公钥为id_rsa.pub 私钥为 id_rsa
将来我们要在本地文件夹(/home/用户名/.ssh)保留私钥不动,并将公钥内容复制到目标主机的 /home/目标主机用户名/.ssh/authorized_keys文件中
注意 authorized_keys是一个文件.
如果.ssh文件夹没有可以创建新的.ssh文件夹,同时如果没有authorized_keys文件也可以创建新的
如果authorized_keys已经存在,请将光标移动到末尾 并将公钥复制进去.
如果使用的是root用户生成的密钥,那么文件夹的生成位置在/root/.ssh 里找公钥并复制到远程的/home/目标主机名.ssh/authorized_keys中 这里注意root的目录不在home目录内而在根目录中
这个时候基本上登录就不需要密码了
布局密钥基本思路:
将root 账户生成的位于/root/.ssh内的id_rsa.pub里的内容复制出来
将内容放到远程主机的/home/用户名/.ssh/authorized_keys里就可以实现无密码登录

cat /root/.ssh/id_rsa.pub
#复制id_rsa.pub的内容
ssh 用户名@ip
#登录
vim /home/用户名/.ssh/authorized_keys
#换行粘贴内容或内容为空时直接粘贴
#保存
:wq
#退出ssh
exit
  1. 在宝塔上设置计划任务
    在宝塔上找到计划任务,并将一下bash代码复制进去,并修改登录名和密码
#!/bin/bash

# 远程主机的信息
REMOTE_HOST="192.168.5.83" #登录目标主机
REMOTE_USER="pi" #登录时使用的用户名  
REMOTE_PASSWORD="pi" #用来执行sudo时填入密码
REMOTE_KEY="/root/.ssh/id_rsa" #这里是本地保存的私钥,用来登录用的.  

# 定义要设置的时间(可选,根据您的需求进行调整)
# 例如,设置时间为 "2023-10-23 12:00:00"(请确保格式正确)
CURRENT_TIME=$(date "+%Y-%m-%d %H:%M:%S")
echo $CURRENT_TIME
# 使用 SSH 连接到远程服务器并执行命令
ssh -i "$REMOTE_KEY" "$REMOTE_USER@$REMOTE_HOST" "sudo -S date -s '$CURRENT_TIME' <<EOF
$REMOTE_PASSWORD
EOF
"

# 检查 SSH 命令的退出状态
if [ $? -eq 0 ]; then
    echo "Time setting command executed successfully."
else
    echo "Error executing time setting command."
fi

此处需要修改
REMOTE_HOST=“192.168.5.83”
REMOTE_USER=“pi”
REMOTE_PASSWORD=“pi”
REMOTE_KEY=“/root/.ssh/id_rsa”
为你需要的信息即可.

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-09 20:38:07       49 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-09 20:38:07       53 阅读
  3. 在Django里面运行非项目文件

    2024-07-09 20:38:07       42 阅读
  4. Python语言-面向对象

    2024-07-09 20:38:07       53 阅读

热门阅读

  1. kotlin 两个 list 怎么过滤重复数据

    2024-07-09 20:38:07       20 阅读
  2. VBA中打开、保存关闭Excel工作簿的方法

    2024-07-09 20:38:07       18 阅读
  3. SQL基础

    SQL基础

    2024-07-09 20:38:07      16 阅读
  4. 如何在SpringCloud项目中实现客户端负载均衡?

    2024-07-09 20:38:07       25 阅读
  5. 深入理解 Docker 容器技术

    2024-07-09 20:38:07       29 阅读
  6. GCP FrontendConfig 详解:优化您的云负载均衡

    2024-07-09 20:38:07       28 阅读
  7. jdk1.8 ConcurrentHashMap 源码分析

    2024-07-09 20:38:07       26 阅读
  8. Android如何创建一个自定义回调接口(例3)

    2024-07-09 20:38:07       22 阅读
  9. mac上挂载linux目录

    2024-07-09 20:38:07       25 阅读