ubuntu 在SSH AuthorizedKeysCommand执行期间,您可以获取远程IP吗?

3okqufwl  于 2023-10-17  发布在  其他
关注(0)|答案(2)|浏览(94)

是否可以在授权连接之前获取SSH连接的传入IP地址?
我们正在使用一个AuthorizedKeysCommand bash脚本,它可以按预期工作,但我希望至少能够记录包括传入IP地址在内的尝试。我找不到任何东西,甚至模糊地暗示它是可用的。像$SSH_CLIENT$SSH_CONNECTION这样的环境变量在脚本中是空的,并且在包含IP的sshd配置中没有可用的令牌。
授权密钥脚本非常简单。

#!/bin/bash
curl -sf -X GET "http://10.x.x.x/gatekeeper/$1/$IP_WOULD_GO_HERE"
f87krz0w

f87krz0w1#

看起来你自己基本上已经回答了这个问题:该值既不能作为标记也不能作为环境变量。剩下的选择是在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
vwhgwdsa

vwhgwdsa2#

自9.4 [1]版起,%C令牌可用:
AuthorizedPrincipalsCommand和AuthorizedKeysCommand现在接受两个额外的%扩展序列:%D扩展到连接会话的路由域,%C扩展到连接源和目的地的地址和端口号。
[1][https://www.openssh.com/txt/release-9.4](https://www.openssh.com/txt/release-9.4)

相关问题