综合实验——用户远程登陆并更改文件
实验目标
主机A远程登陆到主机B,主机B上创建一个web服务器,主机A上的文件可以以crontab的方式(每分钟执行一次),将内容更新到主机B上创建的web网站里的文件里面去,并包含正确的时间戳
实验步骤
- 在主机B上创建一个Web服务器。
- 在主机A上设置crontab任务,每分钟执行一次脚本。
- 在脚本中,使用SSH将主机A上的文件内容更新到主机B的Web服务器上的文件中。
- 配置防火墙规则,允许主机A通过SSH连接到主机B。
- 配置SELinux,确保Web服务器可以正确地读写文件。
步骤1:在主机B上创建Web服务器
#安装Apache
sudo yum install httpd
#创建一个简单的HTML文件作为Web页面的内容
echo "<html><body><h1>Welcome to mysite</h1></body></html>" > /var/www/html/index.html
启动Apache服务并设置为开机自启:
sudo systemctl start httpd
sudo systemctl enable httpd
步骤2:在主机A上设置crontab任务
创建一个test.txt文件
vim test.txt
#内容
hello Linux
welcome to RHCE
HAHAHAHA
如果状态为“active(running)”则表示SSH正常运行
安装SSH服务
sudo apt-get install openssh-server
确认SSH是否安装并正在运行
service ssh status
配置SSH以允许无密码登录到zx2
#创建master主机自己的SSH密钥对(公钥+私钥):
ssh-keygen -t rsa
#把RSA公钥拷贝到ServerB节点
ssh-copy-id zx2@192.168.134.130
创建一个脚本update_website.sh
,该脚本将使用SSH将主机A上的文件内容更新到主机B的Web服务器上的文件中:
#!/bin/bash
# 主机B的IP地址
REMOTE_HOST="192.168.134.130"
# 主机A上的文件路径
LOCAL_FILE="/home/zx/file9"
# 主机B上Web服务器的文件路径
REMOTE_FILE="/var/www/html/index.html"
# 使用SSH将主机A上的文件内容更新到主机B的Web服务器上的文件中
ssh zx2@${REMOTE_HOST} "cat >${REMOTE_FILE}" < ${LOCAL_FILE}
确保脚本具有执行权限:
chmod +x update_website.sh
编辑crontab文件,添加以下行来每分钟执行一次脚本:
设置crontab任务
crontab -e
每分钟执行一次脚本
* * * * * /path/to/update_website.sh
步骤3:配置防火墙规则
#在主机B上,确保允许SSH连接:
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.134.129" port protocol="tcp" port="22" accept'
#在主机B上,允许HTTP流量通过防火墙
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --reload
步骤4:配置SELinux
在主机B上,设置SELinux上下文,允许远程写入Web内容
sudo semanage fcontext -a -t httpd_sys_content_t "/var/www/html/index.html"
sudo restorecon -v /var/www/html/index.html
步骤5:检测实验是否成功
访问主机B的Web服务器,检查内容是否每分钟更新
curl http://192.168.134.130/