在没有SSH密钥的情况下input密码后记得SSH密码

我必须在不同的服务器上使用SSH进行很多工作,我不允许在远程服务器上存储公钥。 所以我不能使用SSH密钥和SSH代理。

身份validation是通过LDAP,所以它始终是相同的密码。 我想在每个会话中input一次密码,然后将其存储在某个地方,并将其用于所有进一步的连接。

我search了很多,我能find的最好的方法是将密码存储在一个环境variables中,并使用sshpass:

SSHPASS=mypass sshpass -e ssh username@servername

但我不喜欢这个想法,知道我的密码保存在一个环境variables。 有一个更好的方法吗?

不是真的,它的声音。

我想你可以将sshpass包装在脚本中,以避免在你的env中拥有密码,但是你可以用脚本编写它。 基本上,如果一个密码必须涉及,你可能只需要处理它。

一种可能是使用SSH证书而不是pubkeys,这可以实现更多的粒度和控制(参见https://www.digitalocean.com/community/tutorials/how-to-create-an-ssh-ca-to-validate-hosts -and-clients-with-Ubuntu )。

Kerberos似乎也可以打勾大家的盒子,但是Kerberos并不一定是人们想要跳到的东西,我会怀疑它是否被认真考虑过。 但它将提供几乎所有你想要的妥协(不包括pubkeys,而且在会话期间无密码login的能力)。

一个中间的解决scheme,可能会考虑到你的需求和服务器运营商的关注/政策可能是像Teleport ,这提供了一个巨大的和相当强大的访问控制。

tl; dr :这听起来像你可能需要咬紧牙关,如果你想避免暴露你的密码,你最好的办法可能是尝试提出一个解决scheme,以解决pipe理员对于pubkey的任何担忧。