摘要
以root身份登入了Ubuntu,把其他用户的公钥加入其$home/.ssh/authorized_keys文件后,需要设置文件和文件夹的权限。
在配置 SSH 免密登录时,.ssh 目录和 authorized_keys 文件的权限设置至关重要。如果权限过于宽松,SSH 服务会出于安全考虑拒绝使用密钥认证。
以下是一个用于正确设置 .ssh 目录和 authorized_keys 文件权限的 Bash 脚本。该脚本应在目标 Ubuntu 服务器上,以你要配置免密登录的用户身份运行。
修改脚本支持指定用户(高级用法)
你可以增强脚本,让它接受用户名作为参数:
#!/bin/bash
# 支持传入用户名:./script.sh username
USER_NAME=${1:?"请指定用户名,例如:$0 alice"}
# 获取该用户的家目录
USER_HOME=$(getent passwd "$USER_NAME" | cut -d: -f6)
SSH_DIR="$USER_HOME/.ssh"
AUTH_KEYS="$SSH_DIR/authorized_keys"
# 检查家目录是否存在
if [ -z "$USER_HOME" ]; then
echo "错误:用户 $USER_NAME 不存在!"
exit 1
fi
if [ ! -d "$SSH_DIR" ]; then
echo "警告:$USER_NAME 的 .ssh 目录不存在:$SSH_DIR"
exit 1
fi
# 设置权限
chmod 700 "$SSH_DIR"
chmod 600 "$AUTH_KEYS"
chown -R "$USER_NAME:$USER_NAME" "$SSH_DIR"
echo "已为用户 $USER_NAME 设置 SSH 权限:$SSH_DIR"
使用方式:
sudo ./setup_ssh_permissions.sh alice
sudo ./setup_ssh_permissions.sh bob
黑夜里不停折腾的代码行者。

浙公网安备 33010602011771号