代码改变世界

天行健,君子以自强不息

  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 :: 管理 ::

摘要

以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
posted on 2025-10-08 16:48  终南山人  阅读(26)  评论(0)    收藏  举报