shell脚本查看ssh登陆日志

对于暴露在公网的服务器来说呢 自然免受不了暴力破解和尝试登陆 

不看不知道 一看吓一跳   刚开的服务器就承受了不属于他这个年龄的压力

前面紫色的数字代表尝试登陆的次数 后面代表的源IP

今天把这个脚本分享给大家

创建一个sh文件

vi ssh-failure.sh

##将一下内容复制进去
#!/bin/bash

# 文件路径
LOG_FILE="/var/log/auth.log"                  

# 检查日志文件是否存在
if [ ! -f "$LOG_FILE" ]; then
    echo "日志文件 $LOG_FILE 不存在。"
    exit 1
fi

# 提取失败连接的IP地址
grep "Failed password" "$LOG_FILE" | awk '{print $(NF-3)}' | sort | uniq -c | sort -nr

exit 0

给脚本执行权限。然后执行

###添加权限
chmod +x ssh-failure.sh
###执行脚本
./ssh-failure.sh

对于暴露在公网的机器呢 我们还是得小心一点的,增加一点安全手段

1、禁止root用户远程登陆

2、更改ssh默认端口

3、使用公钥认证

4、限制访问的源IP范围

5、安装fail2ban (自动阻止失败多次的尝试)

### Shell脚本实现SSH连接及远程命令执行 #### 使用基本SSH命令进行远程命令执行 对于简单的场景,可以直接利用 `ssh` 命令来执行远程主机上的指令。这通常适用于不需要复杂逻辑控制的情况。 ```bash #!/bin/bash REMOTE_IP="your.remote.server.ip" REMOTE_USER="username" # 执行单条命令 ssh ${REMOTE_USER}@${REMOTE_IP} "ls -l /home/" ``` 此方式适合于快速获取信息或是运行一次性任务[^1]。 #### 利用Expect工具简化交互流程 当涉及到密码验证或其他形式的人机对话时,可以采用 `expect` 工具来自动生成这些互动环节。这种方式特别有助于批量管理多台设备或自动化部署环境配置等工作。 ```bash #!/usr/bin/expect set timeout 30 set user [lindex $argv 0] set ip [lindex $argv 1] spawn ssh "$user@$ip" expect { "*yes/no*" { send "yes\r"; exp_continue } "*assword:" { send "password\r" } } interact ``` 上述代码展示了如何创建一个能够自动应答 SSH 登录提示的 Expect 脚本[^2]。 #### 强制分配伪TTY以支持图形界面应用 有时可能需要在远端启动某些依赖 TTY 的应用程序(比如编辑器),这时可以通过 `-t` 参数强制为会话分配伪终端。 ```bash #!/bin/bash REMOTE_IP="your.remote.server.ip" REMOTE_USER="username" # 启动带有交互式的程序,如vim ssh -tt ${REMOTE_USER}@${REMOTE_IP} vim somefile.txt ``` 这里使用了两个 `-t` 来确保即使是在无 TTY 环境下调用也能正常工作[^3]。 #### 结合Docker容器操作的例子 如果目标是要在一个 Docker 容器内部署数据库结构,则可以在 shell 中组合多个步骤形成完整的解决方案: ```bash #!/bin/bash MYSQL_CONTAINER_NAME=mysql_container COMMAND="CREATE DATABASE IF NOT EXISTS testdb; USE testdb;" ssh root@remote_host << EOF docker exec -it ${MYSQL_CONTAINER_NAME} mysql -uroot -e "${COMMAND}" echo "\$(date '+%Y-%m-%d %H:%M:%S') over!!!"; EOF ``` 这段脚本不仅实现了对 MySQL 数据库的操作,还记录下了结束时间戳作为日志输出的一部分[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值