Linux 自动化 SSH 登录:告别密码,一键直达的两种“魔法”!

兄弟们,有没有觉得每次 SSH 远程登录服务器,都要手动输入密码超级麻烦?尤其是在写自动化脚本的时候,这简直是效率杀手!别担心,今天就给大家揭秘 Linux 上实现 SSH 自动化登录的两种超实用方法,让你轻松告别密码输入,实现丝滑连接!


🚀 方法一:ssh-keygen 免密登录 (安全、推荐!)

这是最安全、最主流也是最推荐的自动化 SSH 登录方式!它的原理是利用公钥-私钥对进行身份验证,而不是传统的密码。

工作原理:

  1. 生成密钥对:在你的本地机器上,使用 ssh-keygen 命令生成一对密钥:一个私钥(放在你自己电脑上,绝不能泄露!)和一个公钥
  2. 分发公钥:将你的公钥复制到目标远程服务器的 ~/.ssh/authorized_keys 文件中。
  3. 免密验证:当你再次尝试 SSH 连接时,本地 SSH 客户端会用你的私钥去尝试和远程服务器的公钥进行匹配。如果匹配成功,你就可以直接登录,无需输入密码!

操作示例:

  1. 在本地生成密钥对:

    ssh-keygen -t rsa -b 4096
    

    一路回车即可(如果设置了密码,每次登录私钥时需要输入密码,为了免密可不设置)。

  2. 将公钥复制到远程服务器:

    ssh-copy-id username@remote_host_ip # 最推荐的自动化复制方式
    # 或者手动复制:
    # scp ~/.ssh/id_rsa.pub username@remote_host_ip:~/.ssh/authorized_keys
    

    输入一次远程服务器的密码即可完成公钥的部署。

优点: 极其安全、操作简便、一旦设置永久有效、适合大规模自动化部署。

缺点: 首次设置需要手动分发公钥。


🎭 方法二:expect 自动化处理密码 (脚本救急、谨慎使用!)

有时候,你可能没有权限修改目标服务器的 authorized_keys 文件,或者只是临时需要一个脚本来处理密码输入。这时候,expect 命令就派上用场了!

expect 是一个自动化交互的工具,它通过“期望”(expect)某些输出,然后“发送”(send)相应的输入(比如密码)来模拟用户交互。

工作原理:

expect 脚本会监视 SSH 命令的输出,当它“看到”提示符(比如 yes/nopassword:)时,就会自动发送预设的回答。

代码示例(来自截图):

#!/bin/bash

# 删除 .ssh/known_hosts 中的旧记录,以便每次登录都需要确认(可选,但通常用于确保重新验证)
sed -i /^192.168.88.102/d /root/.ssh/known_hosts

# 使用 expect 自动化 SSH 登录
expect <<EOF
spawn ssh 192.168.88.102         # 执行 SSH 登录
expect "yes/no)?"               # 等待出现 yes/no 确认提示
send "yes\n"                   # 发送 yes 确认
expect "password:"             # 等待输入密码提示
send "123\n"                   # 输入密码 "123" (**注意:密码明文!**)
expect "]"                     # 等待登录成功提示符(根据实际情况调整,比如命令提示符的最后一个字符)
send "touch /tmp/123\n"        # 登录成功后执行命令
send "exit\n"                  # 退出 SSH
expect eof                     # 等待程序结束
EOF

注意事项:

  • 密码明文!:这是 expect 最大的弊端!你的密码会直接写在脚本里,这在安全上是非常危险的。务必妥善保管你的脚本文件,不要上传到公共仓库或共享给不信任的人!
  • 交互模式依赖expect 脚本高度依赖于远程服务器的提示符格式。如果服务器的提示符(比如 password:)稍有变化,脚本就可能失效。
  • 不适合高并发和长期使用:主要用于简单的脚本自动化或临时任务。

优点: 无需修改目标服务器配置、适用于无法使用密钥认证的场景、实现灵活的交互自动化。

缺点: 安全性差(密码明文)、健壮性差(容易因提示符变化而失效)、维护成本相对较高。


总结:选择你的“魔法”!

  • 安全至上、长期自动化:首选 ssh-keygen 免密登录! 它通过非对称加密保障了你的连接安全,一次设置,永久方便。
  • 特殊场景、临时需求:可以考虑 expect 自动化密码输入,但务必注意安全风险! 确保你的脚本文件权限设置严格,并仅在内网或受控环境中使用。

两种方法各有利弊,选择哪种取决于你的具体需求和对安全性的考量。希望这篇文章能帮助你更好地理解和使用 Linux 下的 SSH 自动化登录,让你的开发和运维工作更加高效!💻✨

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值