SSH AuthorizedKeysCommand 中未定义的环境变量 (Docker)
Environment variables not defined in SSH AuthorizedKeysCommand (Docker)
我正在尝试使用 LDAP 建立私钥 SSH 连接。
/etc/ssh/sshd_config
AuthorizedKeysCommand /etc/ldap_ssh_authorized_keys.sh
AuthorizedKeysCommandUser nobody
从 LDAP 服务器获取 public 密钥的脚本
/etc/ldap_ssh_authorized_keys.sh
#!/bin/bash
USERSLIST=$( ldapsearch -x -D "${LDAP_USER}" -w "${LDAP_PASSWORD}" -H $LDAP_URI -b "${LDAP_BASEDN}" -s sub '(objectClass=posixAccount)' -u 'uid' \
grep '^uid:' | sed -n '/^ /{H;d};/uid:/x;$g;s/\n *//g;s/uid: //gp' \
)
while IFS= read -r line; do
exists=$(ldapsearch -x -D "${LDAP_USER}" -w "${LDAP_PASSWORD}" -H $LDAP_URI -b "${LDAP_BASEDN}" \
-s sub "(&(objectClass=posixGroup)(cn=sysadmin)(memberUid=${line}))" | grep "^# numEntries:")
if [[ ! -z $exists ]]
then
ldapsearch -x -D "${LDAP_USER}" -w "${LDAP_PASSWORD}" -H $LDAP_URI -b "${LDAP_BASEDN}" \
-s sub "(&(objectClass=posixAccount)(uid=${line}))" \
-u 'sshPublicKey' \
| sed -n '/^ /{H;d};/sshPublicKey:/x;$g;s/\n *//g;s/sshPublicKey: //gp'
echo -e "";
fi;
done <<< "$USERSLIST"
当我使用 运行 脚本时,/bin/bash 它运行良好,return 我的 public 键。
正常定义的所有环境变量。
- LDAP_URI
- LDAP_BASEDN
- LDAP_USER
- LDAP_PASSWORD
该脚本在尝试建立 SSH 连接时也 运行 正常。但是环境变量不可用。
我也在尝试使用 AuthorizedKeysCommandUser 作为 root。但是什么都没有改变。
我通过从 /proc/1/environ 获取环境变量解决了这个问题。
我正在尝试使用 LDAP 建立私钥 SSH 连接。
/etc/ssh/sshd_config
AuthorizedKeysCommand /etc/ldap_ssh_authorized_keys.sh
AuthorizedKeysCommandUser nobody
从 LDAP 服务器获取 public 密钥的脚本
/etc/ldap_ssh_authorized_keys.sh
#!/bin/bash
USERSLIST=$( ldapsearch -x -D "${LDAP_USER}" -w "${LDAP_PASSWORD}" -H $LDAP_URI -b "${LDAP_BASEDN}" -s sub '(objectClass=posixAccount)' -u 'uid' \
grep '^uid:' | sed -n '/^ /{H;d};/uid:/x;$g;s/\n *//g;s/uid: //gp' \
)
while IFS= read -r line; do
exists=$(ldapsearch -x -D "${LDAP_USER}" -w "${LDAP_PASSWORD}" -H $LDAP_URI -b "${LDAP_BASEDN}" \
-s sub "(&(objectClass=posixGroup)(cn=sysadmin)(memberUid=${line}))" | grep "^# numEntries:")
if [[ ! -z $exists ]]
then
ldapsearch -x -D "${LDAP_USER}" -w "${LDAP_PASSWORD}" -H $LDAP_URI -b "${LDAP_BASEDN}" \
-s sub "(&(objectClass=posixAccount)(uid=${line}))" \
-u 'sshPublicKey' \
| sed -n '/^ /{H;d};/sshPublicKey:/x;$g;s/\n *//g;s/sshPublicKey: //gp'
echo -e "";
fi;
done <<< "$USERSLIST"
当我使用 运行 脚本时,/bin/bash 它运行良好,return 我的 public 键。
正常定义的所有环境变量。
- LDAP_URI
- LDAP_BASEDN
- LDAP_USER
- LDAP_PASSWORD
该脚本在尝试建立 SSH 连接时也 运行 正常。但是环境变量不可用。
我也在尝试使用 AuthorizedKeysCommandUser 作为 root。但是什么都没有改变。
我通过从 /proc/1/environ 获取环境变量解决了这个问题。