我是 Gnu/Linux 和 UNIX 方面的菜鸟。我正在玩游戏来学习这个操作系统的基础知识。
作为我正在玩的游戏的一部分,我必须使用 登录远程服务器ssh
,只有私钥证书和用户名(无密码)。
- 如果我从远程计算机(我使用另一个用户名登录)使用 SSH 登录,我将被授予无需任何密码的访问权限。
- 如果我尝试从本地计算机登录,SSH 会要求我输入密码。
这是我尝试访问的服务器的 SSH 配置的结果吗?
我的意思是,如果我从本地主机(在本例中为服务器)登录以及从远程计算机(在本例中为我的 PC)登录,SSH 可以应用不同的登录策略吗?
多谢。
亲切的问候。
答案1
这是我尝试访问的服务器的 SSH 配置的结果吗?
根据您分享的详细信息,我们无法确定。您甚至可能连接到在同一系统上运行的两个不同的、独立配置的 SSH 守护程序。
我的意思是,如果我从本地主机(在本例中为服务器)登录,并且从远程机器(在本例中为我的 PC)登录,SSH 是否可以应用不同的登录策略?
是的,SSH 服务器可以根据传入连接的各种属性应用不同的策略。
例如,Match
OpenSSH 配置中的关键字sshd
允许您定义条件块,这些条件块仅在满足指定条件列表时才应用(并覆盖先前设置的指令)(有关详细信息,请参阅man 5 sshd_config
)。
将此块添加到/etc/ssh/sshd_config
(确切位置可能会有所不同,具体取决于您的系统):
PubkeyAuthentication yes
Match Address "!127.0.0.1,!::1,*"
PubkeyAuthentication no
将指示sshd
:
- 默认允许公钥认证;
127.0.0.1
禁止对来自和之外的其他地址的连接进行公钥身份验证::1
。
(避免头痛的注意事项:如man 5 ssh_config
、“模式”、
[...] 否定的匹配本身永远不会产生积极的结果。 [...]此处的解决方案是包含一个将产生正匹配的术语,例如通配符[...]
这就是为什么在其末尾"!127.0.0.1,!::1,*"
包含 a )。*