我有两台机器:主机1和主机2它们连接到公共互联网,但也通过私有 LAN 连接(因此两个主机都有一个公共 IP 和一个私有 IP)
。-主机1:192.168.0.1
-主机2:192.168.0.2
我需要自动执行从 Host1 到 Host2 的 SSH 会话(即无密码提示)。但出于安全原因,我需要此功能(自动登录)仅适用于尝试通过私有 LAN 连接的特定用户。
例如:
如果用户 john@Host2 尝试通过私有 LAN 从 Host1 进行连接(即连接来自 192.168.0.1),则允许该连接使用某种身份验证密钥,并且不提示输入密码。
如果连接不是来自私有 LAN,则不允许自动登录(即必须输入密码)。
我将非常感激有关如何进行设置的详细说明。
谢谢。
跟进:
查看给出的链接,到目前为止我看到的是每个解决方案都需要在登录时(对于 ssh-agent 来说)或重新启动机器后(使用钥匙串时)手动输入某种安全密钥。
无论机器是否重新启动,是否实际上可以自动化 SSH 会话?
我开始相信唯一的方法是在 SSH 请求时使用某些工具自动输入密码......然后问题就解决了。
答案1
回答您的后续问题,如果您创建的 SSH 密钥对没有密码,那么您就不需要输入密码来连接服务器。
您可以根据以下段落在 .authorized_keys 中添加公钥:
密钥访问限制
作为限制使用公钥访问任何服务器的可选步骤,可以在服务器上的 ~/.ssh/authorized_keys 文件中的公钥条目之前使用 from 语句来限制允许客户端系统从何处访问服务器。如果没有 from 限制,任何具有适当私钥数据的客户端系统都可以从任何地方连接到服务器。如果密钥对仅在客户端系统从 example.org 下的主机连接时才有效,请在公钥数据之前设置 from="*.example.org"。
server$ cat ~/.ssh/authorized_keys from="*.example.org" ssh-rsa AAAAB3NzaC1…
在“发件人”中,您将输入本地接口 IP 地址。使用该地址以及不使用密码的 ssh 密钥的组合(这不是最佳实践,但对于大多数系统来说都可以正常工作),将实现您想要的效果。
答案2
这可以使用 ssh 密钥来完成。
答案3
您可以限制可使用基于密钥的登录的可接受地址。
请参阅密钥访问限制部分这里。