使用方法

安装curl

如果已有curl,可忽略此步骤。

1
apt-get -y install curl

示例1

创建用户yanyong,设置FQDNblog.yanyong.cc,设置ssh端口23422,设置阿里源,设置中国上海时区Asia/Shanghai

1
2
3
4
5
6
curl -fsSL https://raw.yanyong.cc/sh/debian10-init.sh | bash -s -- \
    --fqdn=blog.yanyong.cc \
    --user=yanyong \
    --port=23422 \
    --source=ali \
    --tz=Asia/Shanghai

执行结果,脚本已更新,此图可能与实际返回结果有所不同。

示例2

创建用户testuser,成功创建用户会触发禁用root远程登录和禁用密码验证登录,如有需要启用root远程登录或密码验证登录,查看可选操作

1
curl -fsSL https://raw.yanyong.cc/sh/debian10-init.sh | bash -s user=testuser

示例3

apt-get dist-upgrade更新系统。

1
curl -fsSL https://raw.yanyong.cc/sh/debian10-init.sh | bash -s distupgrade 

如果跨版本更新系统,例如当前是debian 9,需要传入--source=...参数修改成debian 10的源,此示例为香港源

1
curl -fsSL https://raw.yanyong.cc/sh/debian10-init.sh | bash -s distupgrade source=hk

特别说明

  1. 查看帮助:curl -fsSL https://raw.yanyong.cc/sh/debian10-init.sh | bash -s help。参数的小横线--可以省略,如user=yanyong等同于--user=yanyong,参数顺序无要求。

  2. 创建用户时,默认设置用户密码为随机生成的16位字符串,生成密钥对,保存在创建的用户家目录的.ssh目录下,并设置密钥密码为随机生成的8位字符串。也可以指定密码--password=PASSWORD(用户密码),--keyPasswd=PASSWORD(密钥密码)。

  3. hostname无需指定,取FQDN的最左边记录值为主机名(如FQDN为www.example.com,则hostname为www)。

  4. APT源设置,--source=cn中科大源--source=hk香港源--source=us美国源--source=ali阿里源--source=aws亚马逊源。修改源,会相应的修改NTP地址,已自动选择,无须指定。

  5. 查看所有可用时区:timedatectl list-timezones

  6. 初始化脚本每次执行,无论有没有参数,默认都有以下处理:

    • apt-get upgrade更新系统。
    • 安装man, sudo, vim, net-tools等。
    • 自定义profile文件,优化历史命令记录,设置命令别名,如ll, lt等。
    • 如果成功创建用户,就会禁用root远程登录和禁用密码验证登录。
    • 启用iptables防火墙,开启ping,开启ssh的端口,开启80和443端口。

可选操作

如有需要,启用root远程登录。

1
sudo sed -ri 's/^(PermitRootLogin )no$/\1yes/' /etc/ssh/sshd_config && sudo systemctl reload ssh

如有需要,启用密码验证登录。

1
sudo sed -ri 's/^(PasswordAuthentication )no$/\1yes/' /etc/ssh/sshd_config && sudo systemctl reload ssh

如有需要,关闭iptables防火墙。

1
2
3
sudo iptables -P INPUT ACCEPT
sudo iptables -F INPUT  # 可选
: | sudo tee /etc/iptables/rules.v4  # 可选,重启后也不会打开防火墙

脚本内容

链接:[脚本]

参考链接

https://www.debian.org/mirror/list

https://www.ntppool.org/zone/@

https://en.wikipedia.org/wiki/Regular_expression

https://www.wikiwand.com/en/Regular_expression

https://man7.org/linux/man-pages/man1/bash.1.html

https://www.gnu.org/software/bash/manual/html_node/Pattern-Matching.html