这也许是一个奇怪的问题,但我并不是一个 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。