如何设置SSH,这样就不必键入密码并且无需使用公共密钥?


9

我知道这里有很多问题,涉及如何在不每次都输入密码的情况下连接SSH服务器,答案总是“使用公钥”。好吧,我发现自己处在罕见的情况下,这实际上是不可行的。由于某些莫名其妙的原因,我尝试连接的服务器上的OpenSSH守护程序配置为

RSAAuthentication no
PubkeyAuthentication no

/etc/ssh/sshd_config。我在服务器上没有任何管理权限,因此无法更改这些或任何其他服务器配置选项。(我当然可以完全控制客户端配置:Linux上的OpenSSH 5.8。)

我有哪些选择,尤其是最安全的选择是什么,以避免每次我想通过SSH进入该服务器时都必须输入密码?我将自己的计算机保持得相当安全,因此,如果确实有必要,让我们假设将密码存储在客户端文件中的安全风险较低。

服务器可以接受的其他身份验证方法显然是GSS API(我一无所知),键盘交互(我也一无所知)和密码。以下是一些相关的配置选项:

#ChallengeResponseAuthentication yes

#KerberosAuthentication no

GSSAPIAuthentication yes
GSSAPICleanupCredentials yes

#UsePAM no

这是一条debug(-vv)跟踪:

debug1: Authentications that can continue: gssapi-with-mic,password,keyboard-interactive
debug1: Next authentication method: gssapi-with-mic
debug1: Unspecified GSS failure.  Minor code may provide more information
Credentials cache file '/tmp/krb5cc_1000' not found
debug1: Unspecified GSS failure.  Minor code may provide more information
Credentials cache file '/tmp/krb5cc_1000' not found
debug1: Unspecified GSS failure.  Minor code may provide more information

debug1: Unspecified GSS failure.  Minor code may provide more information

debug2: we did not send a packet, disable method
debug1: Next authentication method: keyboard-interactive
debug2: userauth_kbdint
debug2: we sent a keyboard-interactive packet, wait for reply
debug1: Authentications that can continue: gssapi-with-mic,password,keyboard-interactive
debug2: we did not send a packet, disable method
debug1: Next authentication method: password

服务器是否有/etc/krb5.keytab?GSSAPI(Kerberos)可以很容易地设置客户端;不过,我必须询问服务器的主机名。(也:keyboard-interactive非常类似于password,但不仅限于一个“密码:”提示。)
user1686

@grawity不/etc/krb5.keytab,但是确实有/etc/krb5/krb5.keytab。我无权访问内容。sftp.pass.psu.edu如果可以帮助您解释该过程,则服务器名称为(我认为发出该名称不会有任何危害)。
大卫Z

啊,旧的PSU密码盘。如此美好的回忆。我对密码验证非常满意。您为什么不问校园计算人员(我去那儿时是CAC)而不是联系网络?我的意思是,来吧,他们有Debian镜子。他们并不都是笨拙的Windows管理员。
Broam

@Broam我无法想象我会是第一个问这个问题的人,因此大概他们有一定的理由保持这种方式吧……不过,我认为尝试这样做不会有任何伤害。
大卫Z

Answers:


3

在这种情况下,编写(或更好地记录)期望脚本将是您的选择之一。

每个系统都不相同,因此不会有脚本,但是使用自动预期功能可以很容易地为此录制一个脚本。


令人发指的是不安全,但有一个最简单,最直接的答案就是支持。
Zac B

好点子。最好在防火墙后和专用网络中完成所有这些操作。
johnshen64,2012年

8

根据到目前为止收集到的信息,服务器sftp.pass.psu.edu支持Kerberos 5(GSSAPI)身份验证,并且处于dce.psu.edu领域中。

Kerberos 在具有许多服务器和工作站的网络上非常普遍;许多大型教育机构都建立了它。如果它比公钥身份验证有优势,那么一个优点就是一个可以kinit自动向Kerberos领域中的所有计算机提供凭据,而不必将公钥复制到每台机器。另一个是协议支持–相同的Kerberos凭据可用于30多种协议(邮件,文件系统,数据库...),而不仅仅是SSH。

(关于“仅Windows的笨拙管理员”:该域dce.psu.edu实际上似乎基于Active Directory并由Windows服务器托管。)

请尝试执行以下步骤:

  1. 登录到Kerberos。(kinitklist工具可能位于“ krb5-user”或类似的软件包中,如果系统尚未附带的话。)

    使用kinit your_username @ dce.psu.edu
    

    如果未显示任何错误,则表明登录成功。klist应该显示一个“ krbtgt/dce.psu.edu@...”项目。

  2. 现在,使用-vv选项连接到SSH服务器;如果身份验证成功,那就很好。

    如果不是,则可能必须编辑/etc/krb5.conf文件。在该[domain_realm]部分下,添加以下内容:

    [domain_realm]
        .psu.edu = dce.psu.edu
    
  3. 使用默认的Krb5设置,在#1中获得的票证应有效期为10个小时,并且可以续签长达一周。但是,我无法验证设置。

    如果您希望将密码保存在文件中kinit your_principal < password.txt,则尽管它并不完全可靠,但应该可以使用简单的密码。

    有了ktutil它,可以使一个“密钥表”的使用,而不是密码。

    $ ktutil
    ktutil:附加-password -p your_principal -k 1 -e aes256-cts-hmac-sha1-96your_principal的 
    密码:*********
    ktutil:wkt keytab_file 
    ktutil:  CtrlD
    

    并使用以下方式登录:

    $ kinit -kt keytab_file  your_principal
    

对于我来说,这似乎应该非常接近理想,但它似乎不起作用-我能够成功使用Kerberos登录(没有错误消息),但是仍然提示输入密码。来自的错误消息ssh -vv与我发布的跟踪消息类似,除了我得到的debug1: Unspecified GSS failure. Minor code may provide more information\n Server not found in Kerberos database不是关于未找到凭据缓存文件的信息。
David

嗯,似乎“笨拙的仅Windows管理员”设置了keytab host/sftp.pass.psu.edu,但其真实名称应该是host/lutz.cac.psu.edu。您可以通过128.118.2.85 sftp.pass.psu.edu在/ etc / hosts中添加“ ”来解决此问题,但这有点丑陋-如果管理员修复了服务器,
那就

是的,我会问他们这个问题,但是现在希望您的修复可以解决问题。我明天再试试。
大卫Z

@DavidZaslavsky:可能是有用的提到他们MIT KRB5 v1.10的支持多个主机主体(即 host/lutz.cac.psu.eduhost/sftp.pass.psu.edu在一个单一的密钥表)。(以前的版本仅使用第一个。)
user1686

抱歉,我忘了回来并提供反馈。/etc/hosts按照建议修改后,我得到了debug1: Unspecified GSS failure. Minor code may provide more information Generic error (see e-text)。输出中的其他内容均与错误无关。
David Z

3

我会考虑一种混合解决方案,您只需输入一次密码,然后计算机就会维护远程SSH服务器的套接字。出于这个原因,您可以按照以下步骤进行设置ControlMaster


但是,当我关闭客户端时,主连接将重置。因此,这不是理想的解决方案,但是相对于我目前的情况而言,它会稍有改善。
大卫Z

使用screen保护壳从端接在连接中断或挂断。
LawrenceC 2012年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.