ubuntu - SSH AuthorizedKeysCommand 执行过程中能否获取远程 IP?

标签 ubuntu ssh sshd

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

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

最佳答案

看起来您自己已经回答了大部分问题:该值既不能作为 token 也不能作为环境变量使用。您剩下的选择是在 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
    
  • 关于ubuntu - SSH AuthorizedKeysCommand 执行过程中能否获取远程 IP?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71849366/

    相关文章:

    RedHat 6/Oracle Linux 6 不允许通过 ssh 进行 key 认证

    ruby-on-rails - 安装 pg (0.18.4) 时出错,Bundler 无法继续

    python - 无法访问 docker 容器 Socket 挂起错误

    javascript - 在 Ubuntu 终端上运行 JavaScript 没有输出

    ftp - 在没有 SSH 的服务器上创建符号链接(symbolic link)?

    git - 无法使用 SSH 将 IntelliJ-IDEA 连接到 GitLab

    python-2.7 - Numpy test() 以错误结束

    github - 无法使用空密码将 SSH key 添加到 ssh-agent (Bitrise CLI)

    java - apache mina sshd core 版本 1.3.0 版本的客户端是否有 gss/kerberos auth 支持

    java - Apache MINA SFTP 示例