我通过 SSH 连接到我无法控制的服务器。
我使用公钥访问,不需要使用键盘交互密码进行连接。
我想禁用我的用户的键盘交互访问,以便其他人无法通过这种方式进行黑客攻击。
由于我无法控制服务器,有没有办法设置我的用户配置文件以防止键盘交互访问?
答案1
如果您完全无法控制服务器,我看不出有任何方法可以做到这一点,因为您无法控制服务器设置,而这本来应该是必须的。
您需要做的是将其添加到 /etc/ssh/sshd_config 文件中:
PasswordAuthentication no
现在这将有效地禁用密码验证全部用户,这可能是不理想的。那么你可以做的是,把这个配置指令放在 Match 块中,这样它就只适用于你的用户,在同一个配置文件中:
Match user yourusername
PasswordAuthentication no
如果您可以让服务器管理员为您执行此操作,这可能是可行的方法。
另一种方法是为用户设置一个非常长、随机且复杂的密码,这样您就可以合理地防止随机暴力破解尝试。大多数攻击者可能会使用某种基于字典的技术,因此只要您的密码足够长且随机,它就应该非常安全。
请参阅“man sshd_config”了解更多详细信息。此外,我提出的解决方案是建议这里。
答案2
您只需从文件 from 编辑此行/etc/ssh/sshd_config
即可yes
:no
#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
现在,当有人使用密码进入您的帐户时,您只会收到邮件。