刚刚创建了一个新的虚拟 Ubuntu 服务器,我正在强化它以供生产使用。我目前有一个 root 帐户。我想执行以下操作:
- 创建一个新用户(接下来我们叫他们
jim
这个名字)。我希望他们有一个/home/
目录。 - 授予
jim
SSH 访问权限。 - 允许
jim
rootsu
但不执行sudo
操作。 - 关闭 root SSH 访问。
- 将 SSHd 移至非标准端口以帮助阻止暴力攻击。
我的问题在于前两项。我已经找到了,useradd
但出于某种原因,我无法通过 SSH 以用它创建的用户身份登录。我需要击败 SSHd 来允许这一点吗?
答案1
SSH 对目录和文件权限非常挑剔。请确保:
- 目录 /home/username/.ssh 具有权限“700”,并由用户拥有(不是 root!)
- /home/username/ssh/authorized_keys 具有权限“600”,并归用户所有
将您的公钥复制到authorized_keys文件中。
sudo chown -R username:username /home/username/.ssh
sudo chmod 0700 /home/username/.ssh
sudo chmod 0600 /home/username/.ssh/authorized_keys
有不需要将用户添加到/etc/ssh/ssh_config。
答案2
编辑 (以 root 身份) /etc/ssh/sshd_config
。将以下内容附加到其中:
Port 1234
PermitRootLogin no
AllowUsers jim
Port 1234
使 SSH 监听端口 1234。您可以使用 1 到 65535 之间的任何未使用端口。建议选择只有 root 才能使用的特权端口(端口 1-1024)。如果您的 SSH 守护程序因某种原因停止工作,恶意应用程序将无法拦截连接。
PermitRootLogin
不允许直接 root 登录。
AllowUsers jim
允许用户jim
通过 SSH 登录。如果您不必从任何地方登录,则可以通过将 jim 限制到 IP 地址(将 1.2.3.4 替换为您的实际 IP 地址)来提高安全性:
AllowUsers [email protected]
对配置文件的更改/etc/ssh/sshd_config
不会立即应用,要重新加载配置,请运行:
sudo service ssh reload
答案3
/var/log/auth.log
SSH(或 PAM)拒绝登录尝试的原因将得到线索。使用-v
带有远程控制客户端。有几种常见情况,其他答案中提到过一些:
- 用户帐户没有密码或已被禁用(请参阅
man passwd
,尝试重置密码或检查 的内容/etc/shadow
)。 /etc/ssh/sshd_config
配置为不允许登录(、、、DenyUsers
等,请参阅)。AllowUsers
PasswordAuthentication
PubkeyAuthentication
UsePAM
man sshd_config
- 用户的 shell 未在 中列出
/etc/shells
。 - 与 SSH 操作相关的目录或文件的各种权限问题:、、、
/etc/ssh
等等。/home/jim/.ssh
/home/jim/.ssh/*
我还建议使用添加用户(代替用户添加) 添加新用户;对于各种默认账户设置更友好一些。
只要用户不属于该admin
群组,他们就无法须藤根。对于他们使用苏之后,您需要设置一个 root 密码 ( passwd root
),之后我建议PermitRootLogin=no
在 中设置/etc/ssh/sshd_config
。
答案4
除非您设置了密码,否则 Jim 将无法访问 SSH。以 root 身份执行:
grep -i "jim" /etc/shadow | awk -F':' '{ print $2 }'
如果此命令返回“!”字符,则表示此帐户的登录被禁用。passwd jim
以 root 身份执行将提示您输入新的和确认的密码字符串,之后上述 grep 命令应返回代表 jim 密码的散列字符串。
还要确保验证 jim 具有默认设置的登录 shell 和存在的主目录。
请注意 lekensteyn 的帖子以获取有关修改 SSH 服务器设置的信息。