将密码添加到 .ssh/config

将密码添加到 .ssh/config

我使用的是 ubuntu 12.04。我每天使用 ssh 连接许多服务器,所以我将它们的参数放在.ssh/配置文件;像这样:

Host server1
User tux
Port 2202
HostName xxx.x.xx.x

我知道我们应该使用密钥对来确保安全,但是有时我们无法将公钥添加到远程机器(例如接受密码并执行特定命令的公共 SSH 服务器,或者没有主目录的用户)。

那么,有没有办法将每个连接的密码都放在这个文件中?这样,当服务器要求输入密码时,终端就会输入密码并将其发送到服务器,这样我就不必每次都输入密码了。

答案1

不,没有方法可以以非交互方式在命令行上指定或提供使用 openssh 内置机制进行 ssh 身份验证的密码。至少据我所知没有。您可以将密码硬编码到 expect 脚本中,但这也不是一个好的解决方案。

正如迈克尔所说,您肯定会想使用密钥对进行无密码身份验证,最终私钥在文件中可能有很大的密码。

答案2

为了避免出现一连串的注释:是的,这是不安全的(甚至可以说是不安全的)。我强烈建议您仅在实验室环境下的隔离网络或类似情况下执行此操作,且不涉及生产服务器或潜在生产服务器,而无需完全重置/格式化。

我想设置这个,因为我认为我的 2950 交换机不支持私钥/公钥,我希望在某个时候能够获得这方面的知识,但我还没有做到这一点。

使用别名和 sshpass 可以实现这一点。

  1. 安装 sshpass
  2. 改变你的.ssh/配置文件包含问题中列出的用户名
  3. 为您的终端添加一个别名(我使用了 .bashrc 并且建议不要使用全局设置)
  4. 使用别名登录目标

我的示例别名是:

alias ssc='sshpass -pcisco ssh'

其中“cisco”是密码。请注意,-p 和密码之间没有空格。

用法是(参考问题):

ssc server1

注意:这只针对使用搜索引擎的用户回答了标题中的问题。如果您使用的是问题示例中的服务器,则应使用私钥/公钥对,而不是此答案

答案3

是的,如上所述,没有办法简单地保存密码。我建议使用 ssh 密钥进行授权。

首先,生成你的密钥:

ssh-keygen

然后将密钥复制到您的服务器/桌面上:

ssh-copy-id -i .ssh/id_rsa.pub user@ip-address:

就这样。您将不再被要求输入密码。

我还建议一般删除密码授权,但这取决于你。

答案4

没有办法使用 ssh 来做到这一点,因为它非常不安全。

正如 Danila 提到的,您可以使用预期脚本,但我不会费心。

我想知道您想要实现什么?您想从一台服务器跳转到另一台服务器吗?在这种情况下,您需要在工作站上设置和使用 ssh-agent,并在目标主机上启用代理转发;这样,凭证交换将被路由到您的本地代理,而无需复制您的私钥。

相关内容