在用户级别禁用交互式 SSH

在用户级别禁用交互式 SSH

我通过 SSH 连接到我无法控制的服务器。

我使用公钥访问,不需要使用键盘交互密码进行连接。

我想禁用我的用户的键盘交互访问,以便其他人无法通过这种方式进行黑客攻击。

由于我无法控制服务器,有没有办法设置我的用户配置文件以防止键盘交互访问?

答案1

如果您完全无法控制服务器,我看不出有任何方法可以做到这一点,因为您无法控制服务器设置,而这本来应该是必须的。

您需要做的是将其添加到 /etc/ssh/sshd_config 文件中:

PasswordAuthentication no

现在这将有效地禁用密码验证全部用户,这可能是不理想的。那么你可以做的是,把这个配置指令放在 Match 块中,这样它就只适用于你的用户,在同一个配置文件中:

Match user yourusername
PasswordAuthentication no

如果您可以让服务器管理员为您执行此操作,这可能是可行的方法。

另一种方法是为用户设置一个非常长、随机且复杂的密码,这样您就可以合理地防止随机暴力破解尝试。大多数攻击者可能会使用某种基于字典的技术,因此只要您的密码足够长且随机,它就应该非常安全。

请参阅“man sshd_config”了解更多详细信息。此外,我提出的解决方案是建议这里

答案2

您只需从文件 from 编辑此行/etc/ssh/sshd_config即可yesno

#ChallengeResponseAuthentication yes
ChallengeResponseAuthentication no

答案3

[我假设您使用 BASH 作为登录 shell。如果不是,请适当调整...]

在 中~/.ssh/authorized_keys,在每一行前面添加一个命令规范,如下所示:

command="ssh_key=XXX /bin/bash -l" ssh-dss AAAA...K3E= me@mymachine

在 中~/.bash-profile,将以下陷阱放在顶部:

if [ "${ssh_key}" != "XXX" ]; then
  echo "${SSH_CLIENT}" | mailx -s "password login attempt!" me@mailservice
  exit
fi

现在,当有人使用密码进入您的帐户时,您只会收到邮件。

相关内容