Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Macos 在没有提示的情况下输入密码_Macos_Kerberos - Fatal编程技术网

Macos 在没有提示的情况下输入密码

Macos 在没有提示的情况下输入密码,macos,kerberos,Macos,Kerberos,我看着这个:注意到它说我可以使用“密码标志”。但我不知道该怎么做 我可以在不提示的情况下输入kinit的密码吗 例如,目前: 如果我输入: $ kinit test@REALM 我得到的答复是: test@REALM's password: 我必须输入密码。我可以输入像kinit这样的东西吗test@REALM密码,这样它就不会提示我了?使用该主体的键表 详细信息:如何创建服务键选项卡 有多种方法,但我将假设如下:您正在运行Active Directory作为KDC实现,后端运行在Unix

我看着这个:注意到它说我可以使用“密码标志”。但我不知道该怎么做

我可以在不提示的情况下输入kinit的密码吗

例如,目前:

如果我输入:

$ kinit test@REALM
我得到的答复是:

test@REALM's password: 

我必须输入密码。我可以输入像kinit这样的东西吗test@REALM密码,这样它就不会提示我了?

使用该主体的键表

详细信息:如何创建服务键选项卡

有多种方法,但我将假设如下:您正在运行Active Directory作为KDC实现,后端运行在Unix或类似Unix的操作系统上,如CentOS、FreeBSD、HP-UX等。您还安装了MIT Kerberos或Heimdal,并且正确配置了
krb5.conf

通过软件包/端口管理器安装或从源代码处编译。如果选择编译,请确保计算机上存在所有依赖项

现在运行
mskutil

$ /usr/local/sbin/msktutil update --verbose --use-service-account --account-name <samAccountName> \
  --old-account-password <password> --dont-change-password --keytab <path>
现在,用kinit检查您的键选项卡:

$ kinit  -k -t uawet8er.keytab uawet8er
$ klist
Ticketzwischenspeicher: FILE:/tmp/krb5cc_722
Standard-Principal: uawet8er@AD.EXAMPLE.COM

Valid starting       Expires              Service principal
24.07.2019 13:15:45  24.07.2019 23:15:45  krbtgt/AD.EXAMPLE.COM@AD.EXAMPLE.COM
        erneuern bis 25.07.2019 13:15:45
这个键表现在可以与JGSS的
login.conf
KRB5_-CLIENT_-KTNAME
和MIT Kerberos一起使用了。

您也可以

$ echo 'password' | kinit username

你也许可以根据你使用的kinit来决定,但这是一个非常糟糕的主意。该系统上的任何人都可以读取任何命令的进程表和ARGV,因此您的密码将被公开

正是由于这个原因,kinit的大多数实现都不支持这一点

还不完全清楚您是在Windows的盒子上还是在Unix的盒子上

无论哪种方法,处理此问题的正确方法都是使用键选项卡

键选项卡存储主体的密钥(而不是密码)。在kerberos中 密码用于生成一个更随机的密钥,该密钥实际用于 加密交换。创建/操作键选项卡的命令通常是

ktutil

有两个流行的Kerberos客户端包:MIT和Heimdal。Heimdal是MacOS附带的,但MIT是参考实现。在Heimdal客户端上,您可以使用
--password file
标志:

$ kinit --password-file=~/mypasswordfile test@REALM
这样可以避免将密码泄漏到进程列表中,因为它“从文件名的开头读取密码”

你也可以这样做

--password-file=STDIN
然后将其导入,例如cat password|file | kinit--password file=STDINtest@REALM

注意:这样可以避免通过
ps
输出泄漏密码

在MacOS上,您也可以使用该选项。您可以使用
kinit--version
检查客户端的类型。如果
--version
标志无法识别,则很可能是MIT客户端;Heimdal客户端似乎也能识别标志并报告版本

注意,Ubuntu在14.04和16.04之间将默认值从Heimdal实现切换到MIT实现。另外,一般来说,这两个包。

使用“ktutil”创建一个键表

传递keytab和login的命令

基尼特username@domain.com-k-t/path/to/username.keytab


参考链接

黑客的方法。对我有用。谢谢。在CentOS 7上,我不得不在密码周围使用单引号
,而不是
,并确保Active Directory域/Kerberos域已大写,以使其正常工作。这对OS X FWIW不起作用(这需要一个安全的密码输入。您可以将密码存储在钥匙链中并与kinit一起使用,请参阅bash中的“我更喜欢”
kinit username@rogerdpack请随意增强答案。@Michael-O,他不知道。我也不知道。关于如何做到这一点的逐步MWE将非常有用。@user1717828我同意,我将在tim中添加教程。)e、 @Michael-O现在是时候了吗?;)@我来这里是因为我正在寻找一种方法来保存我的密码,以便更容易地修改。对于这一点,解决方案是
kinit--keychain
,然后你只需键入一次密码。这真的总是有效吗?在我的例子中,我遇到了一个错误
错误的开始时间值swarm file=mypasswordfile
好的,我已经解决了我的拼写错误(至少在这里是有效的)。我想您的kerberos服务器或本地设备可能还有其他问题,可能会问一个新问题。
--password-file=STDIN
> ktutil   
ktutil:  addent -password -p username@domain.com -k 1 -e rc4-hmac   
Password for username@domain.com: [enter your password]  
ktutil:  addent -password -p username@domain.com -k 1 -e aes256-cts  
Password for username@domain.com: [enter your password]   
ktutil:  wkt username.keytab   
ktutil:  quit


    # Below steps will will create a keytab for the user, move it into a secure directory, 
and automatically get a ticket when the user logs in with a bash shell

mkdir /home/username/keytabs 
chmod 700 /home/username/keytabs 
mv username.keytab /home/username/keytabs 
chmod 600 /home/username/keytabs/username.keytab 
echo "kinit -kt /home/username/keytabs/username.keytab username@domain.com" >> /home/username/.bash_profile