GaGa's Blog

One GaGa, One World !

1. autossh 是什么

autossh 是一个用来 自动重启 SSH 会话和隧道 的工具。
它主要解决 ssh 建立的端口转发/隧道在 网络抖动、超时、掉线 等情况下不会自动恢复的问题。

  • 它不是 SSH 的替代品,而是 SSH 的封装增强工具
  • 底层依然调用 ssh,只是在会话失效时帮你自动重连。

Read more »

批量建立这些隧道

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#!/bin/bash

# 配置部分
KEY="private_key_tunnel02"
USER="tunnel_user"
HOST="10.1.1.1"
SSH_PORT=2323
REMOTE_HOST="10.2.2.2"
REMOTE_PORT=5555

START_PORT=20001
END_PORT=25000

for PORT in $(seq $START_PORT $END_PORT); do
echo "建立隧道: 本地 $PORT -> $REMOTE_HOST:$REMOTE_PORT"
ssh -i "$KEY" \
-L ${PORT}:${REMOTE_HOST}:${REMOTE_PORT} \
${USER}@${HOST} -p $SSH_PORT \
-o ServerAliveInterval=30 -o ServerAliveCountMax=2 -o RekeyLimit=4G,2h \
-Nf
done

说明:

  • -N 不执行远程命令,只建隧道
  • -f 后台运行
  • seq 会从 20001 到 25000 依次建立隧道
  • 每条命令会独立生成一个 ssh 进程
Read more »

日志信息

/var/log/secure

Aug 27 00:01:27 gaga sshd[18197]: User u01 not allowed because account is locked
Aug 27 00:01:27 gaga sshd[18197]: input_userauth_request: invalid user u01 [preauth]
Aug 27 00:01:27 gaga sshd[18197]: Connection reset by 192.168.3.33 port 52153 [preauth]

日志分析

Read more »

ssh 命令参数(客户端),也就是你在终端执行 ssh user@host 时能用的各种选项。


ssh 命令常用参数整理

1. 基本连接

Read more »

1. 基础配置

参数 说明 示例/推荐
Port SSH 服务监听端口 默认 22,推荐改成高位端口,如 2222
ListenAddress 指定监听地址 例如 0.0.0.0 或指定内网地址
Protocol SSH 协议版本 默认 2(SSH1 已废弃)

2. 身份验证与安全

Read more »

SSH隧道基本原理

  • SSH 隧道构建于 SSH 安全协议之上,利用加密和身份验证机制,保证通信安全。
  • 建立连接后,可在此加密连接内部“开通”新通道,用于转发数据。

1.搭建 SSH 隧道前的准备

Read more »

chpasswd 是一个在 Linux 系统中用于批量更改用户密码的命令。它通常用于从标准输入读取用户名和密码对,每行一个,格式为 username:password,然后更新 /etc/passwd/etc/shadow 文件中的密码信息。

基本用法

  1. 更改用户密码

    1
    chpasswd

    执行此命令后,系统会提示你输入密码。然后,你可以输入用户名和新密码,格式为 username:newpassword

  2. 从文件更改密码

    1
    chpasswd < filename

    其中 filename 是包含用户名和密码对的文件,每行一个,格式为 username:password

  3. 使用 echo 命令

    1
    echo "username:newpassword" | chpasswd

    这个命令会将 username:newpassword 作为输入传递给 chpasswd

  4. 使用管道

    1
    echo "username:newpassword" | chpasswd

    这与上面的命令相同,也是将用户名和密码通过管道传递给 chpasswd

  5. 使用期望expect)脚本:

    1
    expect -c "spawn chpasswd; send \"username\r\"; send \"newpassword\r\"; expect eof"

    这个脚本会自动输入用户名和新密码。

注意事项

Read more »

你碰到的 Connection reset

通常和「连接池/连接管理」有关,但原因可能有:

  • 服务端关闭了 Keep-Alive,客户端还在用旧连接请求 → TCP RST。
  • Nginx/Proxy/CDN 在 ES 前面,有连接空闲超时(默认 60s 或 120s),导致中断。
  • 连接池配置过小/过大,连接被回收或资源不足。
  • 负载均衡器/防火墙 在空闲时切断连接。

👉 建议排查:

Read more »
0%