Sep*_*ram 69 security ssh authentication ssh-keys
大多数 OpenSSH 配置指南建议禁用密码身份验证以支持基于密钥的身份验证。但在我看来,密码认证有一个显着的优势:无需密钥即可从任何地方进行连接。如果始终使用强密码,这不应该是安全风险。还是应该?
Jan*_*nen 78
与密码登录相比,使用 ssh 密钥确实有一个独特的功能:您可以指定允许的命令。这可以通过修改~/.ssh/authorized_keys服务器上的文件来完成。
例如,
command="/usr/local/bin/your_backup_script.sh", ssh-rsa auiosfSAFfAFDFJL1234214DFAfDFa...
Run Code Online (Sandbox Code Playgroud)
将只允许使用该特定密钥的命令 `/usr/local/bin/your_backup_script.sh"。
您还可以为密钥指定允许的主机:
from="yourclient,yourotherclient", ssh-rsa auiosfSAFfAFDFJL1234214DFAfDFa...
Run Code Online (Sandbox Code Playgroud)
或者将两者结合起来:
from="yourbackupserver", command="/usr/local/bin/your_backup_script.sh", ssh-rsa auiosfSAFfAFDFJL1234214DFAfDFa...
Run Code Online (Sandbox Code Playgroud)
使用密钥,您还可以授予某些用户(例如顾问)临时访问服务器的权限,而无需透露该特定帐户的密码。顾问完成他/她的工作后,可以删除临时密钥。
Mik*_*eyB 48
您可以通过只允许在您的网络内进行密码验证来获得两全其美的效果。将以下内容添加到您的末尾sshd_config:
PasswordAuthentication no
Match Address 10.0.0.0/8,172.16.0.0/12,192.168.0.0/16
PasswordAuthentication yes
Run Code Online (Sandbox Code Playgroud)
Rom*_*man 25
密码或基于密钥的身份验证各有利弊。
在某些情况下,例如,基于密钥的认证是少比密码认证安全。在其他情况下,其基于密码的安全性较低。在某些情况下,一种更方便,而在另一些情况下,则更少。
这一切都归结为:当您进行基于密钥的身份验证时,您必须使用密码保护您的密钥。除非您运行 ssh-agent(ssh-agent 使您无需每次都输入密码),否则您在便利性方面一无所获。安全性是有争议的:攻击媒介现在从服务器转移到了你,或者你的帐户,或者你的个人机器,(...) - 这些可能更容易,也可能不会更容易破解。
在决定这一点时,要跳出框框思考。您在安全性方面获得或失去取决于您的环境和其他措施的其余部分。
编辑:哦,刚刚看到您在谈论家庭服务器。我遇到了同样的情况,“密码”或“带有密钥的 USB 记忆棒”总是在我身边?我选择了前者,但将 SSH 侦听端口更改为与 22 不同的端口。这阻止了所有那些蹩脚的脚本小子蛮力强制整个网络范围。
当您使用密码登录时,您会将密码传输到服务器。这意味着服务器的运营商可以修改 SSHD 以访问您的密码。使用公钥身份验证,他们无法获得您的私钥,因为只有您的公钥才会到达服务器。
您已经部分回答了您的问题 - 攻击者可以连接的地方越多,他通过暴力破解闯入您的服务器的可能性就越大(考虑 DDoS)。
还将您的密码长度与密钥大小(通常为数千位)进行比较。
ssh 密钥可防止基于中间人的密码攻击。
当您尝试使用密钥登录时,服务器将根据您的公钥构造一个质询并将其发送给您的客户端。它将解密它并构造一个适当的响应来发送。
您的私钥永远不会发送到服务器,任何监听的人都无法做任何事情,只能拦截那个会话。
使用密码,他们将拥有您的凭据。
我的解决方案是在 USB 密钥的加密分区上拥有一个合适格式的便携式 ssh 密钥。这使我能够:
在丢失密钥时轻松收回该密钥。
限制它允许我访问哪些服务器
并仍然随身携带
虽然安装挂载软件很痛苦(truecrypt)
正如@MartinVejmelka 所说,这是一种权衡。
您使用基于密钥的身份验证的原因是,该密钥远高于当前或不久的将来的暴力破解,您需要来自自己的 PC,或者将密钥放在 USB 记忆棒或类似设备上。
密码有以下问题:
键的数量级更长,并且不会在任何时候显示,因此避免了这三个问题。
| 归档时间: |
|
| 查看次数: |
27342 次 |
| 最近记录: |