SSH 会话转发器

SSH 会话转发器

除了 SSH_ORIGINAL_COMMAND 之外,ssh 会话期间还存在哪些其他环境变量? 有没有一份明确的清单?

答案1

尝试运行env(或set) 并获取完整列表?如果您想要 SSH 特定的列表,则需要为您的sshsshd提供商指定供应商(最好是平台,至少是主版本号)。

答案2

我整理了一份 OpenSSH v8.8 使用的 shell 环境变量名列表。有关答案,请参阅下面的 SSH 转发部分。

OpenSSH(8.8p1)中使用的环境变量作为静态getenv(3)函数的参考,并由我的代码审查进行补充。

SSH 会话转发器

对于 OpenSSH 会话转发器,环境变量列表如下:

  • DISPLAY,当前桌面会话的默认主机/显示号/和屏幕,字符串,channels.c mux.c readpass.c readpass.c ssh.c
  • HOME、密码数据库指定的用户主目录的路径、filepath、sshconnect.c
  • LOGIN,UNIX 用户名;仅在 IBM AIX 上使用,字符串,session.c
  • LOGNAME, USER 的同义词;设置以与使用此变量的系统兼容。, 字符串,session.c
  • KRB5CCNAME, MIT Kerberos 5 会话名称;仅在 KRB5 环境中使用,字符串;通常与 Windows Active Directory 一起使用,session.c
  • MAIL, 设置为 UNIX Maildir 系统的用户本地收件箱的文件路径、文件路径或目录路径,session.c
  • PATH、可执行程序所在的目录集、文件路径列表、session.c
  • SSH_CLIENT,(已弃用)SSH 客户端连接套接字信息;由 sshd(8) 守护进程设置,字符串,session.c
  • SSH_CONNECTION, 标识连接的客户端和服务器端。该变量包含四个空格分隔的值:客户端 IP 地址和客户端端口号以及服务器 IP 地址和服务器端口号。SSH 客户端和服务器套接字连接信息;由 sshd(8) 守护进程设置,字符串,session.c
  • SSH_ORIGINAL_COMMAND, 如果执行强制命令,此变量包含原始命令行。它可用于提取原始参数。; 由sshd(8)守护进程设置,字符串,session.c
  • SSH_TTY, 设置为与当前 shell 或命令关联的 tty(设备路径)的名称。如果当前会话没有 tty,则不设置此变量。由sshd(8)., 字符串设置,session.c
  • SSH_TUNNEL, 可选设置,sshd(8)包含客户端请求隧道转发时分配的接口名称。, 字符串,session.c
  • SSH_USER_AUTH, 此变量可选设置,sshd(8)可能包含一个文件的路径名,该文件列出了会话建立时成功使用的身份验证方法,包括所使用的任何公钥。, 字符串,session.c
  • SUPATH、超级用户 shell 中可执行程序所在的一组目录、文件路径列表、session.c
  • TERM,UNIX 终端设备名称,字符串,session.c
  • TZ,UNIX 时区,字符串,session.c
  • UMASK,UNIX 文件权限掩码,4 位八进制,session.c
  • USER, 设置为登录用户的名称。, 字符串,session.c

客户端/服务器可执行文件使用的环境

与上面列出的用户交互式 shell 会话相反,以下是直接影响ssh客户端和sshd守护进程本身的环境变量。

SSH 客户端

对于 OpenSSH 客户端,环境变量列表如下:

  • AUTHSTATE- 仅限 IBM AIX;用于代替/etc/environment、filespec、session.c
  • DISPLAY,当前桌面会话的默认主机/显示编号/和屏幕;变量DISPLAY指示 X11 服务器的位置。ssh 自动将其设置为指向“hostname:n”形式的值,其中“hostname”表示运行 shell 的主机,“n”是 ≥ 1 的整数。ssh 使用此特殊值通过安全通道转发 X11 连接。用户通常不应明确设置 DISPLAY,因为这将导致 X11 连接不安全(并要求用户手动复制任何所需的授权 cookie)。, :.,channels.c mux.c readpass.c readpass.c ssh.c
  • KRB5CCNAME, Kerberos5 用户凭证缓存的绝对路径。, filepath, session.c,sshd.c
  • HOME、密码数据库指定的用户主目录的路径、filepath、sshconnect.c
  • LANG、操作系统的区域设置、区域设置类别、misc.c
  • PATH、可执行程序所在的目录集、文件路径列表、session.c
  • SHELL, 密码数据库指定的用户 shell 可执行映像的文件路径。, filepath,readconf.c sftp.c ssh-agent.c sshconnect.c
  • SSH_ASKPASS, 如果 ssh 需要密码,那么它将从当前终端读取密码(如果它是从终端运行的)。如果 ssh 没有与之关联的终端,但设置了DISPLAYSSH_ASKPASS,那么它将执行指定的程序SSH_ASKPASS并打开 X11 窗口以读取密码。这在从 .xsession 或相关脚本调用 ssh 时特别有用。(请注意,在某些机器上,可能需要重定向输入才能/dev/null使其工作。)由用户设置;指向 Ask Password 可执行程序/脚本的文件路径,文件路径,readpass.c
  • SSH_ASKPASS_ENV,替代SSH_ASKPASS,文件路径,readpass.c
  • SSH_ASKPASS_REQUIRE, 允许进一步控制程序的使用askpass。如果将此变量设置为“ never”,则 ssh 将永远不会尝试使用程序。如果将其设置为“ prefer”,则 ssh 在请求密码时将优先使用该askpass程序而不是 TTY。最后,如果将变量设置为“ force”,则askpass无论是否DISPLAY设置,都将使用该程序输入所有密码。, 'never' 或 'prefer',readpass.c
  • SSH_ASKPASS_REQUIRE_ENV,替代SSH_ASKPASS_REQUIRE,文件路径,readpass.c
  • SSH_PKCS11_HELPER, 与 HMS Vault、文件路径一起使用,ssh-pkcs11-client.c
  • SSH_SK_HELPER, 安全密钥辅助二进制文件,用于 FIDO2 或 U2F 安全密钥。通常位于~/openssh/libexec/ssh-sk-helper, 文件路径,ssh-sk-client.c
  • SSH_SOCKS_SERVER, SOCKS 防火墙连接信息;由 SSH 用户在调用之前设置ssh(1),字符串,
  • TERM, TERM 环境变量用于终端处理。它允许 DB-Access(和其他基于字符的应用程序)识别您正在使用的终端并与之通信。, tty_name,mux.c ssh.c
  • TMPDIRTMPDIR是 Unix 和 POSIX 中的规范环境变量,应用于指定暂存空间的临时目录。大多数 Unix 程序都会遵守此设置,并使用其值来表示临时文件的暂存区域,而不是常见的默认值或/tmp. /var/tmp, dirpath,misc.c
  • TZ, 告诉您位于哪个时区。, 3 个字符的时区字符串, auth-pam.csession.c

SSH 服务器(守护进程)

对于 OpenSSH 服务器,环境变量列表如下:

  • KRB5CCNAME, Kerberos5 用户凭证缓存的绝对路径。, filepath, session.c,sshd.c
  • SSH_CONNECTION, 标识连接的客户端和服务器端。该变量包含四个空格分隔的值:客户端 IP 地址和客户端端口号以及服务器 IP 地址和服务器端口号。SSH 客户端和服务器套接字连接信息;由 sshd(8) 守护进程设置,字符串,sftp-server.c
  • SHELL, 密码数据库指定的用户 shell 可执行映像的文件路径。, filepath,readconf.c sftp.c ssh-agent.c sshconnect.c

SSH 代理(守护进程)

对于 OpenSSH 代理,环境变量列表如下:

  • SHELL, 密码数据库指定的用户 shell 可执行映像的文件路径。, filepath,readconf.c sftp.c ssh-agent.c sshconnect.c
  • SSH_AGENTPID_ENV_NAME, 包含身份验证代理的进程 ID 的环境变量的名称。, 进程 ID,ssh-agent.c
  • SSH_AUTHSOCKET_ENV_NAME, 包含身份验证套接字路径名的环境变量的名称。, filepath,authfd.c
  • SSH_AUTH_SOCK, 标识用于与代理通信的 UNIX 域套接字的路径。传递给 SSH 用户,UNIX 套接字路径,

SSH 密钥生成器(CLI)

对于该ssh-keygen实用程序,环境变量列表如下:

  • SSH_SK_PROVIDER, 安全密钥辅助二进制文件,用于 FIDO2 或 U2F 安全密钥。通常位于~/openssh/libexec/libsk-libfido2, 文件路径,ssh-add.c ssh-keygen.c
  • SSH_SK_HELPER, 安全密钥辅助二进制文件,用于 FIDO2 或 U2F 安全密钥。通常位于~/openssh/libexec/ssh-sk-helper, 文件路径,ssh-add.c ssh-keygen.c

添加 SSH ssh-add(1) (命令行界面)

对于该ssh-add实用程序,环境变量列表是:

  • SSH_SK_HELPER, 安全密钥辅助二进制文件,用于 FIDO2 或 U2F 安全密钥。通常位于~/openssh/libexec/libsk-libfido2, 文件路径,ssh-add.c ssh-keygen.c

参考

相关内容