我的公司已禁用 SSH 公钥身份验证,因此每次我都必须手动输入密码(我不打算更改/etc/ssh/sshd_config)。
但是gssapi-keyex,gssapi-with-mic身份验证已启用(请参阅下面的ssh调试输出)。
在这种情况下如何使用自动登录? 
我可以利用gssapi-keyex和/或gssapi-with-mic身份验证吗?
> ssh -v -o PreferredAuthentications=publickey hostxx.domainxx
OpenSSH_5.3p1, OpenSSL 1.0.0-fips 29 Mar 2010
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: Applying options for *
debug1: Connecting to hostxx.domainxx [11.22.33.44] port 22.
debug1: Connection established.
debug1: identity file /home/me/.ssh/identity type -1
debug1: identity file /home/me/.ssh/id_rsa type -1
debug1: identity file /home/me/.ssh/id_dsa type 2
debug1: Remote protocol version 2.0, remote software version OpenSSH_5.3
debug1: match: OpenSSH_5.3 …Run Code Online (Sandbox Code Playgroud) 我正在调试 Kerberos 设置。我有一个有效的krb5.conf,我可以打电话kinit USERNAME来获取一张票据授予票据 (TGT):
Credentials cache: /root/krb5cc_root
Default principal: USERNAME@EXAMPLE.COM
Number of entries: 1
[1] Service principal: krbtgt/EXAMPLE.COM@EXAMPLE.COM
        Valid starting: Wednesday, June 4, 2014 at 10:02:29 PM
        Expires: Thursday, June 5, 2014 at 8:02:29 AM
Run Code Online (Sandbox Code Playgroud)
我想使用该 TGT在命令行上请求 Kerberos服务票证,以便我可以使用 klist 查看它。它将有助于调试我正在尝试解决的 Kerberos 问题。
是否有命令或程序可以检索给定服务的 Kerberos 服务票证?
当我发出命令来更改我的密码时:
sudo passwd huahsin
系统提示我:
Current Kerberos password:
我不知道我对系统配置做了什么,我如何在更改密码时消除这个 Kerberos 东西?
我正在使用在登录 KDE 时ksshaskpass将受密码保护的密钥添加ssh-agent到其中,kerberos 是否有类似的东西?
我基本上知道这些服务彼此分开做什么。我想知道的是:在使用所有这些服务的基于 linux 的网络中成功登录时究竟会发生什么?咨询这些服务的顺序是什么?什么服务与什么服务对话?
是否可以查询我的 (MIT) Kerberos KDC 以返回已颁发当前有效 TGT 的主体列表?
我的用例是,我想通过仅查询 KDC 机器来找出哪些用户当前登录到网络环境中的任何机器上。
我已将 PAM 身份验证配置为使用 Kerberos,并且可以使用我的委托人的 Kerberos 凭据正确进行身份验证。
当我尝试使用过期密码创建主体时遇到了麻烦:
kadmin: addprinc +needchange test_principal
Run Code Online (Sandbox Code Playgroud)
当我尝试登录时(从 VT 或图形迎宾器),在正确输入密码后,我收到了密码已过期的预期消息,系统提示我创建一个新密码。完成此操作后,身份验证失败并出现以下错误kdc.log:
krb5kdc[...](info): TGS_REQ (4 etypes {18 17 16 23}) 192.168.0.200: NO PREAUTH: authtime 0, test_principal@MY.REALM for host/server.my.realm@MY.REALM, Generic error (see e-text)
Run Code Online (Sandbox Code Playgroud)
以及以下(并不奇怪)错误/var/log/auth.log:
pam_krb5(gdm3:auth): (user test_principal) credential verfication failed: KDC returned error string: NO PREAUTH
Run Code Online (Sandbox Code Playgroud)
一些笔记
getprincin kadmin.local)显示 0 次失败的登录尝试+needchange标志的帐户,我就可以正确进行身份验证。+needchange标志(通过modprincin kadmin.local),我会得到预期的行为;即提示用户更改密码,然后验证成功。/etc/passwd但由 LDAP 条目备份。正如其他地方所建议的,我尝试像这样创建我的主体:
kadmin: addprinc -requires_preauth +needchange test_principal …Run Code Online (Sandbox Code Playgroud)在普通的 linux 机器上,当我sudo -s作为普通用户使用时,我变成了 root 但HOME仍然指向~user,所以每个管理员都有自己的环境等(这是没有env_reset或always_set_home设置的)。
在主目录位于 AFS 文件系统上的系统上,如果环境变量KRB5CCNAME被保留,这也有效,因为 root 可以在/tmp.
但是如果我sudo在这样的系统上使用来更改本地非 root 用户(例如特定服务的专用用户),新用户将无法访问 kerberos 缓存(因为它由旧用户拥有并且模式为 600)。但是如果我unset KRB5CCNAME && kinit user && aklog && exec bash,我可以再次访问我的环境。
所以问题是:是否有一种干净的方法让 sudo 获取我之前拥有的 kerberos 票证并将它们添加到新用户的 kerberos 票证缓存中?
我必须在大学的服务器上运行一些测试。我可以从办公室的桌面 ssh 访问服务器。我想在服务器上启动一个 python 脚本,该脚本将在周末运行多个测试。
办公室的桌面将在周末进入待机状态,因此即使 SSH 会话终止,该进程也必须继续在服务器上运行。
我知道nohup和screen和tmux,在这样的问题描述:
我现在正在做的是:
ssh username@servertmuxpython3 run_my_tests.py  -> 这个脚本做了一堆subprocess.check_output其他脚本,这些脚本本身会启动一些 Java 进程。tmux attach我重新获得仍然运行良好的 tmux 会话,没有任何错误。我一直检查这个几分钟,测试运行良好。在此之后,如果我通过 SSH 登录到服务器,我确实能够重新连接到正在运行的tmux会话,但是我看到的是:
Traceback (most recent call last):
  File "run_my_examples.py", line 70, in <module>
  File "run_my_examples.py", line 62, in run_cmd_aggr
  File "run_my_examples.py", line 41, in run_cmd …Run Code Online (Sandbox Code Playgroud) 我尝试登录到仅支持使用 kerberos 身份验证登录的服务器。这是我的尝试:
kinit user@FOO.ORG
aklog -c foo.org
ssh server
Run Code Online (Sandbox Code Playgroud)
但后来我又被要求输入密码。
这是我在~/.ssh/config条目中的内容server(我的/etc/ssh/ssh_config是空的):
Host server
    HostName someserver.foo.org
    User user
    ForwardX11 yes
    ForwardX11Trusted yes
    GSSAPIAuthentication yes
    GSSAPIDelegateCredentials yes
Run Code Online (Sandbox Code Playgroud)
据同事说,这(或类似的东西)对他们有用。我可以用 kerberos 令牌登录到其他机器上就好了。我认为它与我的/etc/krb5.conf,但我不知道要寻找什么。我尝试/etc/krb5.conf从服务器复制到我的工作站,但没有成功。
如果我运行,这是输出的一部分ssh -vvv server:
debug1: Next authentication method: gssapi-with-mic
debug1: Unspecified GSS failure.  Minor code may provide more information
Server not found in Kerberos database
debug1: Unspecified GSS failure.  Minor code may provide more information
Server not found in Kerberos …Run Code Online (Sandbox Code Playgroud)