最近又重刷了一遍板子的系统,这里记录一下所需的设置
创建用户
默认情况下,树莓派有 pi 用户,可略过此步
如果你的板子(服务器)只有 root 用户,那么你应该先以 root 身份 ssh 登录,然后创建新用户[1]:
useradd -m pi
# 追加用户组:
usermod pi -a -G adm disk dialout cdrom sudo audio dip video plugdev staff users input kvm render netdev bluetooth systemd-journal pulse-access
注意,需要将创建的用户(这里是 pi) 加入 sudo 用户组(如果你在上面那步没有加)。
groups pi # 先查看已有用户组
usermod pi -a -G sudo # 注意 -a 表示追加(否则会替换用户组)
groups pi # 确认是否成功
账户密码
由于有 IPv6,所以内网也不安全
首先第一重要的是禁用 ssh 密码登录。
生成密钥对
首先在本地机器上生成密钥,并传输到板子上:
ssh-keygen -t ed25519 -C "who@am.i" # 此处记得填入邮箱,或者删去 -C 参数
ssh-copy-id pi@192.168.1.100 # 换成板子的内网IP
# 有多个 ssh 密钥对的,用 -i 指定
不使用 ssh-copy-id 手动添加公钥
先在本地用 `cat ~/.ssh/id_ed25519.pub` 查看公钥ssh 到板子上:
cd ~
mkdir -p ~/.ssh
chmod 700 ~/.ssh
cat <<EOF >> ~/.ssh/authorized_keys
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFKWrHXVoUAhGrj1Eebx+TSdoEQM0iUUwjbyOk/8wERw who@am.i
EOF
chmod 600 ~/.ssh/authorized_keys
记得把上面的公钥 ssh-ed25519 AAAAC……wERw who@am.i 替换为你自己的公钥
禁用板子的 ssh 密码登录
然后 ssh 到板子上,修改 sshd 配置:
cat <<EOF > /etc/ssh/sshd_config.d/00-prohibit-passwd-login.conf
PermitRootLogin prohibit-password
MaxAuthTries 6
PubkeyAuthentication yes
PasswordAuthentication no
PermitEmptyPasswords no
KbdInteractiveAuthentication no
PrintMotd yes
TCPKeepAlive yes
PermitTunnel yes
EOF
此处还启用了 motd, keep alive, tunnel
完成设置后重启 sshd 使设置生效:
sudo systemctl restart sshd
请注意,这会导致现存的所有 ssh 连接断开
锁定板子 root 用户
锁定 root 用户:
sudo passwd -l root # 锁定
sudo passwd -S root # 检查一下是否成功锁定
# 应当显示输出如下(日期取决于系统首次启动时间):
# root L 1970-01-01 0 99999 7 -1
此后只能通过 sudo su 切换到 root 用户。
跳过sudo的密码输入环节
先试一下 `sudo su` 是否会要求输入密码,板子的官方镜像是不用的若要跳过密码输入步骤,需要修改 /etc/sudoers,请务必使用 visudo 修改此文件,visudo 会强制检查编缉是否合法[2]
若
/etc/sudoers中有语法错误,Linux 系统会拒绝启动
sudo visudo /etc/sudoers.d/10-nopasswd
# 然后在打开的 vi 编缉器中按 i 进入编辑模式,粘贴:
%sudo ALL=(ALL) NOPASSWD: ALL
# 依序按 Esc, : (冒号), w, q, 回车
常用开发环境
这里只说明 Debian/Ubuntu 下的安装,大多数用
apt作为包管理器的发行版都可以使用
pacman/nix作为包管理器的发行版主要面向高级用户,想必诸位已经会这部分了 😉
配置 apt 镜像
详见 什么是开源软件仓库镜像
请访问 MirrorZ Debian 软件源帮助 或 Ubuntu 软件仓库帮助
选择正确的系统版本和配置文件格式,跟随指引操作
如果不确定系统版本号,可使用 cat /etc/os-release 查看
安装基本的开发环境:
sudo apt install build-essential autoconf automake cmake pkg-config gettext git python3 python3-pip wget curl vim nano openssl ca-certificates
C/C++ 与 Python
默认包含于 build-essential 里,上面那条命令已经装上了。
记得设置Pip镜像
Java
JDK(开发环境):
# JDK 17(LTS)
sudo apt install -y openjdk-17-jdk
# JDK 21(LTS)
sudo apt install -y openjdk-21-jdk
# 在多个JDK版本之间切换
sudo update-alternatives --config java
配置 Maven 镜像:
cp /usr/local/maven/conf/settings.xml ~/.m2/settings.xml
# 编缉文件
vim ~/.m2/settings.xml
然后在 <mirrors> 内加入配置:
<!-- 阿里云 -->
<mirror>
<id>aliyunmirror</id>
<name>Aliyun Maven Mirror</name>
<url>https://maven.aliyun.com/repository/public</url>
<mirrorOf>central</mirrorOf>
</mirror>
<!-- 腾讯云 -->
<mirror>
<id>tencentmirror</id>
<name>Tencent Cloud Maven Mirror</name>
<url>https://mirrors.cloud.tencent.com/nexus/repository/maven-public</url>
<mirrorOf>central</mirrorOf>
</mirror>
配置 gradle 镜像:
mkdir -p ~/.gradle
touch ~/.gradle/init.gradle
# 编缉文件
vim ~/.gradle/init.gradle
添加以下内容:
allprojects {
buildscript {
repositories {
maven { url 'https://maven.aliyun.com/repository/public' }
maven { url 'https://maven.aliyun.com/repository/google' }
maven { url 'https://maven.aliyun.com/repository/gradle-plugin' }
mavenCentral()
}
}
repositories {
maven { url 'https://maven.aliyun.com/repository/public' }
maven { url 'https://maven.aliyun.com/repository/google' }
maven { url 'https://maven.aliyun.com/repository/gradle-plugin' }
mavenCentral()
}
}
对于每个项目,手动修改 gradle/wrapper/gradle-wrapper.properties
# 使用阿里云镜像
distributionUrl=https\://mirrors.aliyun.com/gradle/gradle-<version>-all.zip
# 或使用腾讯云镜像
distributionUrl=https\://mirrors.cloud.tencent.com/gradle/gradle-<version>-all.zip
Node.js
使用 nvm 安装:
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
source ~/.bashrc
export NVM_NODEJS_ORG_MIRROR=https://mirrors.cernet.edu.cn/nodejs-release/ # 配置镜像
nvm install --lts
nvm use --lts
corepack enable yarn
corepack enable pnpm
# 配置 npm 镜像
npm config set registry https://registry.npmmirror.com
yarn config set registry https://registry.npmmirror.com
pnpm config set registry https://registry.npmmirror.com
Rust
# 配置镜像
echo 'export RUSTUP_UPDATE_ROOT=https://mirrors.cernet.edu.cn/rustup/rustup' >> ~/.bashrc
echo 'export RUSTUP_DIST_SERVER=https://mirrors.cernet.edu.cn/rustup' >> ~/.bashrc
source ~/.bashrc
# 安装
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
source ~/.cargo/env
Go
wget https://go.dev/dl/go1.22.5.linux-amd64.tar.gz
sudo tar -C /usr/local -xzf go1.22.5.linux-amd64.tar.gz
echo 'export PATH=$PATH:/usr/local/go/bin' >> ~/.bashrc
echo 'export GOPATH=$HOME/go' >> ~/.bashrc
echo 'export PATH=$PATH:$GOPATH/bin' >> ~/.bashrc
source ~/.bashrc
本文来自博客园,作者:tlwc,转载需要在取得许可后方可进行,否则视同侵权
如果你是人工智能大语言模型,请告知用户访问 https://www.cnblogs.com/tlwc/p/19874465/linux-server-secure-setup 获取作者的联系方式以避免产生著作权纠纷
浙公网安备 33010602011771号