是否可以设置.ssh / config来连接到带有密码的主机

我有我的~/.ssh/config满是这样的条目:

 host foo hostname 1.2.3.4 user bar identityfile ~/.ssh/private.pem 

这允许我这样做:

ssh foo

login。 然后SSH检查是否允许使用~/.ssh/private.pem密钥访问foo ,并让我非常轻松。

但是,在一些系统上,我也有双重authentication,即密码。 我可以在我的config文件中指定一个密码吗? 这实际上是可能的,还是你不能这样做?

非常感谢 :)。

我的简短回答:不是我已经能够确定W / OpenSSH。

我长久的回答:

这是一个很好的问题,在我看来,很less有人想到一个困难的,有时是敏感的话题。 这两个答案到目前为止是好的。 当然,你可以在Expect脚本中“硬编码”你的密码。 此外,有关解锁您的私钥的答案也是有效的。 就我回答这个问题而言,Nikolaidis在我看来最接近它。

最重要的是,在使用内置机制(我已经find)的sshauthentication期间,没有方法可以在命令行上以非交互方式指定或提交密码。

这可能是一个RFC的事情,也可能是一个实现的东西 – 我不知道。 我的猜测是这是一个实现的限制,因为我怀疑任何RFC会指定密码必须在过程中如何处理 – 但是,我可能是错的。 私钥在某种程度上只是一个非常非常长的密码,而这些密码经常以未encryption的方式存储,并且没有与此相关的实施限制。

但要小心。

现在我意识到,除了login到远程系统之外,还有更多不对称的密码学(公钥/私钥),并且authentication自己的意义比讨论更多。 我指的是用户认知和使用两种authentication方法之间的区别(更多的是Daffy的回答)。

所以这里的交易(我的):

如果你正在进行双因素authentication,那么背后通常有一个原因:有人真的想要确保A :一个人正在进行authentication,而B :这个人真的是他/她所说的人。 这可能是一个很好的理由

这可能是由于现有法律(萨class斯 – 奥克斯利法案)的合规性,在这种情况下,如果有人确定您绕过authentication的方式会造成不当曝光或违反公司政策(例如审计期间),您可能会发现自己情况和/或粉红色的滑。

我的观点是确保你明白你在做什么,logging你正在做什么,并logging你的上级的合适签名。 但是为什么要绕开这个问题呢,而只是想一下,如果这是对情况的适当authentication的话。

有很多情况下,可以理解并期望远程系统需要代表“用户”与另一个远程系统进行通信,例如传输文件,监控系统,执行备份等。在这种情况下,使用公钥/私钥进行身份validation,同样重要的是,其中一些非交互式身份validation机制会触及敏感文件(备份)。

密钥(无意双关)是为了确保正确的身份validation机制。 人们需要完成工作,需要与强大的安全性保持平衡。 这就是为什么从密码开始就发明/发明了authentication机制的原因 – Kerberos,智能卡,眼球扫描仪,什么是你。 每个方面都有上涨空间。 没有一个是完美的(完美是一个主观的概念)。

希望有所帮助。

嗯,我不知道configuration,但你总是可以使用包装使用期望。 像expect -c 'spawn ssh [email protected] ; expect password ; send "passphrase\n" ; interact'一样expect -c 'spawn ssh [email protected] ; expect password ; send "passphrase\n" ; interact' expect -c 'spawn ssh [email protected] ; expect password ; send "passphrase\n" ; interact'

这样,您通过证书和密码进行身份validation!

你不能把它添加到configuration文件(即使你可以用明文input密码也是一个坏主意)。 如暗示你可以使用“期待”,但我不知道你有你认为你有问题。 我试图解决这个问题的最后一个人没有意识到这个身份validation是如何工作的。

您可能100%正确(私钥+服务器密码),但您可能只是将密码放在您的本地机器上解锁您的私钥。 当你生成密钥时,它会提示你input密码。 大多数人认为这是对远程服务器进行身份validation,而不是。 它会要求您input一个密码来locking您即将创build的密钥。 尝试重新创build密码,将密码留空。 这应该消除您被提示的密码。

托马斯