当前位置: 首页>>技术教程>>正文


在Ubuntu服务器上创建一个新的SSH用户

, , ,

问题描述

刚刚创建了一个新的虚拟Ubuntu服务器,并且正在将其硬化以供生产使用。我目前有一个root帐户。我想要做到以下几点:

  • 创建一个新用户(我们将其称为jim)。我希望他们有一个/home/目录。

  • 授予jim SSH访问权限。

  • 允许jimsu为root,但不执行sudo操作。

  • 关闭根SSH访问。

  • 将SSHd关闭到non-standard端口以帮助停止brute-attacks。

我的问题在于前两项。我已经找到useradd,但由于某种原因,我无法以通过SSH创建的用户身份登录。我需要击败SSHd才能做到这一点吗?

最佳解决方法

编辑(以root身份)/etc/ssh/sshd_config。附加以下内容:

Port 1234
PermitRootLogin no
AllowUsers jim

Port 1234会导致SSH侦听端口1234.您可以使用1到65535之间的任何未使用的端口。建议选择只能由root使用的特权端口(端口1-1024)。如果您的SSH守护进程由于某种原因停止工作,则一个流氓应用程序无法拦截该连接。

PermitRootLogin不允许直接登录。

AllowUsers jim允许用户jim通过SSH登录。如果您不必从任何地方登录,则可以通过将jim限制为IP地址(将IP地址替换为1.2.3.4)来提高安全性:

AllowUsers jim@1.2.3.4

对配置文件/etc/ssh/sshd_config的更改不会立即应用,以重新加载配置,请运行:

sudo service ssh reload

次佳解决方法

SSH对目录和文件权限非常挑剔。确保:

  1. 目录/home/username/.ssh具有权限”700″,并由用户拥有(不是root!)

  2. /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。

第三种解决方法

/var/log/auth.log中会有线索说明为什么SSH(或PAM)拒绝登录尝试。通过使用ssh客户端的-v选项可以找到其他线索。其他答案中提到的几种常见情况:

  • 用户帐户缺少密码或被禁用(请参阅man passwd,尝试重置密码或检查/etc/shadow的内容)。

  • /etc/ssh/sshd_config配置为禁止登录(DenyUsersAllowUsersPasswordAuthenticationPubkeyAuthenticationUsePAM等,请参阅man sshd_config)。

  • 用户的 shell 未在/etc/shells中列出。

  • 与SSH操作相关的目录或文件的各种权限问题:/etc/ssh/home/jim/.ssh/home/jim/.ssh/*

我还建议使用adduser(而不是useradd)来添加新用户;它对各种默认帐户设置更友好一些。

只要用户不是admin组的一部分,他们将无法sudo到root。为了让他们使用su,你需要设置一个root密码(passwd root),之后我建议在/etc/ssh/sshd_config中设置PermitRootLogin=no

第四种方法

我可能是错的,但我总是必须安装服务器守护进程才能连接(至少在桌面上)默认情况下安装ssh,但这只是客户端

这个命令安装服务器

sudo apt-get install openssh-server

您可以通过编辑更改端口并停止root登录

/etc/ssh/sshd_config

这需要您重新启动服务。

sudo service ssh restart

第五种方法

除非您设置了密码,否则Jim将无法访问SSH。以root身份执行:

grep -i "jim" /etc/shadow | awk -F':' '{ print $2 }'

如果此命令返回”!”字符,则此帐户的登录被禁用。以超级用户身份执行passwd jim将提示您输入一个新的并确认的密码字符串,之后上面的grep命令将返回一个代表jim密码的散列字符串。

另外请务必确认jim有一个默认设置的登录shell和一个存在的主目录。

请注意lekensteyn的帖子,以获取有关修改SSH服务器设置的信息。

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/980.html,未经允许,请勿转载。