使用 ssh 密钥从 root 添加用户

使用 ssh 密钥从 root 添加用户

这也许是一个奇怪的问题,但我并不是一个 shell 脚本专家。

我正在配置一个以 root 身份启动的 Ubuntu 服务器。我想以非交互方式设置新用户帐户、删除 root 登录并设置 ssh 密钥,所有这些都在一个脚本中完成。

我目前拥有的:

# Reconfigure sshd to disable root login
sed -i 's/PermitRootLogin yes/PermitRootLogin no/' /etc/ssh/sshd_config
# add user with no password (vagrant copies root ssh key)
useradd new-user -d /home/new-user
echo 'new-user ALL=(ALL:ALL) ALL' >> /etc/sudoers
mkdir -p /home/new-user/.ssh
cp /root/.ssh/authorized_keys /home/new-user/.ssh/authorized_keys
chown new-user:new-user /home/new-user/.ssh/authorized_keys
# restart ssh
service ssh reload

这很有效 - 但我现在有点担心我忽略了某种安全漏洞,或者这是一种糟糕的完成任务的方法。

有没有更简单的方法可以实现这一点?

谢谢。

答案1

像这样:

#!bin/sh
# $Id$

# sshd
sed -i 's/PermitRootLogin yes/PermitRootLogin no/' /etc/ssh/sshd_config
service ssh reload

# sudo
echo '%wheel    ALL=(ALL)   ALL' > /etc/sudoers.d/wheel

# user
useradd new-user -d /home/new-user
mkdir /home/new-user/.ssh
cp /root/.ssh/authorized_keys /home/new-user/.ssh/authorized_keys
chown -R new-user:new-user /home/new-user/.ssh/

答案2

对我来说它看起来足够好(请更有经验的人纠正我!),只有几个警告。

您不需要为每个用户重新配置 sshd_config,最好手动为用户设置授权密钥,因为每个用户可以拥有不同的密钥(但您编码的行为可能是您想要的行为)。

创建用户后您也不需要重新启动 ssh。

相关内容