如果必须使用密码,如何自动进行 SSH 登录

在这里插入图片描述
SSH 没有通过标准输入发送密码的简单方法,因此很难实现自动化。虽然它在安全性方面并不理想,但您可以使用该sshpass 实用程序在 bash 脚本中自动执行 SSH 密码身份验证。

在我们开始之前——出于某种原因,对 SSH 使用自动密码被认为是不好的做法。在几乎所有情况下,最好使用 SSH 密钥,我们将在下面展示。但是,密码确实具有更易于管理、记住和分发给团队成员的优点。这些同时都是安全方面的缺点,但这是您可以选择进行的权衡。

使用 SSHPass

常规ssh 命令没有–password 允许您轻松自动执行此操作的标志。您必须安装一个工具sshpass 来明确处理这个问题。你可以从大多数 Linux 包管理器下载它;对于像 Ubuntu 这样的基于 Debian 的系统,这将是:

sudo apt-get install sshpass

如果您sshpass 从脚本文件内部使用,则可以直接将其与-p 标志一起传递,然后是标准的 SSH 命令:

sshpass -p 'password' ssh user@remote

但是,由于以下几个原因,这不是一个好的做法:

  • 如果在脚本文件之外使用,它会将明文密码暴露给 Linux 命令历史记录和其他系统。其他 Linux 用户可能能够看到它。
  • 可能不清楚此脚本文件中是否隐藏了密码,这可能会导致暴露它的不良文件权限。
  • 它可能会在版本控制中被意外跟踪,并且不允许更改客户端使用的密码。

因此,您应该将密码存储在文件中。确保为其设置权限以确保其他用户无法访问它。

echo "password" > password_file
chmod 600 password_file

然后,将其传递给sshpass with -f:

sshpass -f password_file ssh user@remote

改为设置 SSH 密钥

大多数系统首选 SSH 密钥。它们更长,也更难意外泄漏,使它们成为安全的理想选择。它们还鼓励基于身份的身份验证,因为 SSH 密钥通常与创建它们的机器相关联。

SSH 将您的公钥存储在 中~/.ssh/id_rsa.pub,它用于所有请求。生成新的密钥文件很容易:

ssh-keygen

您需要将此添加到~/.ssh/authorized_keys 要连接的服务器上的文件中。有一个内置的 SSH 命令可以为您轻松完成此操作:

ssh-copy-id -i ~/.ssh/id_rsa.pub user@host

完成后,您将不再需要输入密码。您可以将此密钥复制到其他机器上,但通常只需添加多个密钥即可。

您仍然希望在远程服务器上禁用密码登录,并可能设置速率限制、白名单,甚至两因素身份验证。您可以阅读我们的保护 SSH 可访问机器的指南以了解更多信息。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

mikes zhang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值