SSH AuthorizedKeysCommand 执行过程中能否获取远程IP?
Can you get the remote IP during SSH AuthorizedKeysCommand execution?
是否可以在连接授权之前获取 SSH 连接的传入 IP 地址?
我们正在使用按预期工作的 AuthorizedKeysCommand bash 脚本,但我希望至少能够记录包括传入 IP 地址在内的尝试。我一直找不到任何可以含糊地暗示它可用的东西。 $SSH_CLIENT
和 $SSH_CONNECTION
等环境变量在脚本中为空,并且在包含 IP 的 sshd 配置中没有可用的令牌。
授权密钥脚本非常简单。
#!/bin/bash
curl -sf -X GET "http://10.x.x.x/gatekeeper//$IP_WOULD_GO_HERE"
看起来您自己基本上已经回答了这个问题:该值既不能作为令牌也不能作为环境变量使用。您剩下的选择是在 sshd 本身之外的某个地方记录连接:
如果您让 systemd 监听端口 22 上的连接而不是 sshd...
systemctl disable --now ssh
systemctl enable --now ssh.socket
...然后您会看到所有连接记录在您的日记中,如下所示:
Apr 14 17:43:41 node1 systemd[1]: Started OpenSSH per-connection server daemon (192.168.121.19:45516).
或者,您可以添加防火墙规则来记录连接
端口 22:
iptables -A INPUT -p tcp --dport 22 --syn -j LOG --log-prefix 'SSH '
这将使您记录如下消息:
Apr 14 17:46:33 node1 kernel: SSH IN=eth0 OUT= MAC=52:54:00:e9:91:6f:52:54:00:4f:05:26:08:00 SRC=192.168.121.19 DST=192.168.121.35 LEN=60 TOS=0x08 PREC=0x40 TTL=64 ID=40136 DF PROTO=TCP SPT=45518 DPT=22 WINDOW=64240 RES=0x00 SYN URGP=0
是否可以在连接授权之前获取 SSH 连接的传入 IP 地址?
我们正在使用按预期工作的 AuthorizedKeysCommand bash 脚本,但我希望至少能够记录包括传入 IP 地址在内的尝试。我一直找不到任何可以含糊地暗示它可用的东西。 $SSH_CLIENT
和 $SSH_CONNECTION
等环境变量在脚本中为空,并且在包含 IP 的 sshd 配置中没有可用的令牌。
授权密钥脚本非常简单。
#!/bin/bash
curl -sf -X GET "http://10.x.x.x/gatekeeper//$IP_WOULD_GO_HERE"
看起来您自己基本上已经回答了这个问题:该值既不能作为令牌也不能作为环境变量使用。您剩下的选择是在 sshd 本身之外的某个地方记录连接:
如果您让 systemd 监听端口 22 上的连接而不是 sshd...
systemctl disable --now ssh systemctl enable --now ssh.socket
...然后您会看到所有连接记录在您的日记中,如下所示:
Apr 14 17:43:41 node1 systemd[1]: Started OpenSSH per-connection server daemon (192.168.121.19:45516).
或者,您可以添加防火墙规则来记录连接 端口 22:
iptables -A INPUT -p tcp --dport 22 --syn -j LOG --log-prefix 'SSH '
这将使您记录如下消息:
Apr 14 17:46:33 node1 kernel: SSH IN=eth0 OUT= MAC=52:54:00:e9:91:6f:52:54:00:4f:05:26:08:00 SRC=192.168.121.19 DST=192.168.121.35 LEN=60 TOS=0x08 PREC=0x40 TTL=64 ID=40136 DF PROTO=TCP SPT=45518 DPT=22 WINDOW=64240 RES=0x00 SYN URGP=0