FreeIPA Jump Install
跳板机和普通的client区别
如果客户端是centos7系统,则和跳板机之间没有区别。即在centos 7 系统下安装的堡垒机客户端,用户可以登录任意一台有权限登录的客户端服务器,并可以通过这台服务器登录到其他有权限登录的服务器。
如果客户端是centos 6及以下系统。则有区别:因为freeipa 在4.0之上才支持otp认证。而centos 6 只支持3.3版本。所以,如果用户使用passwd+otp认证,则登录client会失败。
1、安装ipa-client
yum install ipa-client -y
配置本地DNS解析
本地有部署的私有DNS,对ipa.vip域 做了转发,所以客户端指向私有DNS即可。如果没有私有DNS,需要将DNS指向ipa-server的地址
| Bash |
|---|
| # vim /etc/resolv.conf
nameserver 172.26.32.48
nameserver 172.26.32.53
|
2、配置client加入ipa.vip 域
如果是跳板机,hostname命名为jump.ipa.vip
ipa-client-install --domain=ipa.vip --server=server.ipa.vip -U --enable-dns-updates --mkhomedir --hostname=jump.ipa.vip -N -p admin -w xxxxxxxx --force-join
如果只是单纯client 加入域,可以使用本地IP命名格式172-26-32-45.ipa.vip
ipa-client-install --domain=ipa.vip --server=server.ipa.vip -U --enable-dns-updates --mkhomedir --hostname=172-26-32-45.ipa.vip -N -p admin -w xxxxxxxx --force-join
3、配置jump
yum install openldap-clients
jump脚本,可以放在/usr/local/bin/jump
| Bash |
|---|
| #!/usr/bin/env bash
# Auther: chaic
# Description:
ldap_serv="server.ipa.vip"
dc1="ipa"
dc2="vip"
host=$1
echo "Input: $host"
if [ "$host" == "" ];then
echo '=============================='
echo '$USER Host List:'
echo '=============================='
ldapsearch -H ldaps://${ldap_serv} -Y GSSAPI -b 'cn=hbac,dc='"${dc1}"',dc='"${dc2}"'' "(&(memberHost=*)(memberUser=uid=$(whoami)*))" | awk -F '[,|=]' '/^memberHost: / {print $2}'
echo '=============================='
exit
fi
if [ "$host" == "list" ];then
echo '=============================='
echo 'All Host List:'
echo '=============================='
ldapsearch -H ldaps://${ldap_serv} -Y GSSAPI -b 'cn=computers,cn=accounts,dc='"${dc1}"',dc='"${dc2}"'' 'fqdn=*' | awk '/^fqdn: / {print $2}'
echo '=============================='
exit
fi
hname=`ldapsearch -H ldaps://${ldap_serv} -Y GSSAPI -b 'cn=computers,cn=accounts,dc='"${dc1}"',dc='"${dc2}"'' 'fqdn=*' | awk '/^fqdn: / {print $2}' | grep -w "${host}" | sort | uniq`
if [ `echo ${hname} | grep -oP "\-${host}" | wc -l` -gt 1 ];then
echo -e "\033[031m Hostname is more than one item! please select one for your needs: \033[0m"
echo ${hname} | tr ' ' '\n' | awk '{print "jump " $1}'
exit 0
fi
if [ "${hname}" == "" ];then
echo "IP to Hostname not exists."
else
echo "ssh $hname"
ssh -o StrictHostKeyChecking=no $hname
fi
|
添加执行权限
chmod +x /usr/local/bin/jump
以上jump 环境准备完成,需要到server 的 web UI 配置账户
ipa-client-install 参数含义
| Bash |
|---|
| Usage: ipa-client-install [options]
Options:
--version show program's version number and exit
-h, --help show this help message and exit
-U, --unattended 无人值守(un)安装从不提示用户
--uninstall 卸载现有安装。卸载可以使用——unattended选项运行
Basic options:
-p PRINCIPAL, --principal=PRINCIPAL
用于加入IPA领域的主体
--ca-cert-file=FILE
从该文件加载CA证书
--ip-address=IP_ADDRESS
指定要加入DNS的IP地址。这选项可以多次使用
--all-ip-addresses 任何接口上配置的所有可路由的IP地址会被添加到DNS吗
--domain=DOMAIN_NAME
IPA部署的DNS主域(非必须与当前主机名相关)
--server=SERVER IPA服务器的FQDN
--realm=REALM_NAME IPA部署的Kerberos领域名称(通常为主DNS域的大写名称)
--hostname=HOST_NAME
机器的主机名(FQDN)。如果指定,则主机名将被设置,系统配置将被更新为在重启后持久化。
默认情况下从Python的socket模块调用getfqdn()的结果使用。
Client options:
-w PASSWORD, --password=PASSWORD
加入IPA领域的密码(假定为批量密码)除非校长也已设定)
-W 提示输入密码以加入IPA领域
--noac 不修改nsswitch.conf和PAM配置
-f, --force 强制设置LDAP/Kerberos配置
--configure-firefox
配置Firefox以使用IPA域凭据
--firefox-dir=FIREFOX_DIR
指定安装Firefox的目录(for)例如:“/usr/lib/firefox”)
-k KEYTAB, --keytab=KEYTAB
从上次注册中备份的密钥选项卡的路径
--mkhomedir 为用户第一次登录创建主目录
--force-join 强制客户端注册,即使已经注册
--ntp-server=NTP_SERVER
要使用的NTP服务器。此选项可以多次使用次
-N, --no-ntp 不配置NTP
--force-ntpd 停止和禁用任何时间
--nisdomain=NISDOMAIN
NIS域名
--no-nisdomain 不配置NIS域名
--ssh-trust-dns 配置OpenSSH客户端信任DNS SSHFP记录
--no-ssh 不配置OpenSSH客户端
--no-sshd do not configure OpenSSH server
--no-sudo do not configure SSSD as data source for sudo
--no-dns-sshfp 不自动创建DNS SSHFP记录
--kinit-attempts=KINIT_ATTEMPTS
尝试获取主机TGT的次数(默认为5)。
--request-cert 为机器请求证书
SSSD options:
--fixed-primary 配置sssd以使用固定服务器作为主IPA服务器
--permit 默认禁用访问规则,允许所有访问。
--enable-dns-updates
将机器配置为尝试dns更新IP地址变更。
--no-krb5-offline-passwords
配置ssd不存储用户密码服务器脱机
--preserve-sssd 尽可能保留旧的ssd配置
Automount options:
--automount-location=AUTOMOUNT_LOCATION
自动安装位置
Logging and output options:
-v, --verbose print debugging information
-d, --debug alias for --verbose (deprecated)
-q, --quiet output only errors
--log-file=FILE log to the given file
|