Ilm*_*war 3 vpn ssh tunneling known-hosts ssh-keys
我有一台位于防火墙后面的机器。我使用带有端口转发的 VPN 隧道通过 ssh 远程连接到它。为了连接到机器,我使用了 VPN 的外部 IP 以及我个人和临时分配的端口。我使用的命令是:
ssh USER@VPN_IP -p PORT
Run Code Online (Sandbox Code Playgroud)
由于VPN_IP
并且PORT
经常更改,我无法获得保存主机密钥known_host
以摆脱中间人攻击的优势,但同时主机密钥对我来说是众所周知的,我可以按顺序将其提供给 ssh将其用于当前VPN_IP
和PORT
组合。那可能吗?如何?
该known_hosts
文件用于提供这些密钥,并且没有直接的命令行替代方案(无论如何它不会那么方便)。但是,您的目标完全可以通过该known_hosts
文件实现!
通读man sshd
的ssh_known_hosts
文件格式。
执行主机认证时,如果任何匹配的行具有正确的密钥,则接受认证;要么完全匹配,要么,如果服务器已提供用于身份验证的证书,则为签署该证书的证书颁发机构的密钥。
可以在~/.ssh/known_hosts
(和/etc/ssh/ssh_known_hosts
)中使用通配符:
这些文件中的每一行都包含以下字段:标记(可选)、主机名、密钥类型、base64 编码密钥、注释。字段由空格分隔。
主机名是一个以逗号分隔的模式列表(
*
并?
充当通配符);每个模式依次与规范主机名(在对客户端进行身份验证时)或用户提供的名称(在对服务器进行身份验证时)进行匹配。模式前面也可以!
表示否定:如果主机名与否定模式匹配,即使它与该行上的另一个模式匹配,也不会(该行)接受它。主机名或地址可以选择性地包含在[
和]
括号内,然后是“:”和非标准端口号。
可以使密钥受信任
网络范围,如果已知,例如TEST-NET-2
:
198.51.100.* ssh-rsa AAAAB3Nza...2iQ==
Run Code Online (Sandbox Code Playgroud)TEST-NET
使用逗号分隔列表的多个范围(例如所有s):
192.0.2.*,198.51.100.*,203.0.113.* ssh-rsa AAAAB3Nza...2iQ==
Run Code Online (Sandbox Code Playgroud)甚至在任何地方连接时:
* ssh-rsa AAAAB3Nza...2iQ==
Run Code Online (Sandbox Code Playgroud)如果此密钥不存在,它仍会警告您其他密钥的真实性,显示指纹并自动添加,如果您回答yes
。比较是逐行进行的。
归档时间: |
|
查看次数: |
2708 次 |
最近记录: |