【问题标题】:Copying public key into remote node without password将公钥复制到没有密码的远程节点
【发布时间】:2014-10-08 15:19:17
【问题描述】:

我需要使用 bash 脚本来执行以下操作:

  1. 在 NodeA 上生成公钥私钥
  2. 将公钥复制到远程NodeB的authorized_keys中
  3. 将 NodeB 添加到 NodeA 的 known_hosts。

我需要在没有密码提示的情况下完成所有这些操作,以便 ssh 进入 NodeB

在第二步中,我什至用“-i”指定了私钥。

以下脚本我现在仍然要求输入密码

#!/bin/bash

sudo ssh-keygen -t rsa -N "" -f /root/.ssh/id_ccn_rsa
ssh -i /root/.ssh/id_ccn_rsa -o StrictHostKeyChecking=no $1
sudo sh -c "ssh-keyscan $1 >> /root/.ssh/known_hosts"

【问题讨论】:

  • 首先告诉我们您如何能够在不使用密码的情况下访问远程服务器以及您拥有哪些用户和/或权限。先排除关于传输任何文件的部分。
  • 我可以从我的系统通过 ssh 连接到两个节点。我需要从一个节点 ssh 到另一个节点。为了让这两个节点相互通信,我希望设置一个单独的密钥对。我无权访问密码。我现在可以让它工作的唯一方法是将公钥从 nodeA 复制粘贴到 nodeB 的 authorized_keys 列表中,同时我从我的电脑上 ssh-ed 到它们中
  • 考虑使用 saltstack 或 ansible 之类的东西。或者,由于此活动是其中之一,请使用集群 ssh 同时编辑所有主机上的文件。

标签: linux bash shell ssh public-key


【解决方案1】:

没有魔法。

要部署密钥,您必须能够在没有密钥的情况下至少登录一次。或者让可以登录并具有 root 访问权限的人为您部署公钥。

除非您的帐户是在没有密码的情况下设置的并且 sshd 配置了非默认的 PermitEmptyPasswords yes 选项,否则您无法在没有密码和密钥的情况下登录。

【讨论】:

  • 如果我有 10 个//更多节点需要 scp 到远程节点,我无法从每个节点手动登录。这就是我现在正在做的事情。但是有没有办法让它自动化呢?
  • 您必须使用一次ssh-copy-id 才能将公钥部署到每个目标。之后,如果私钥没有密码,你可以不用密码登录。您可以在~/.ssh/config 中设置一个条目,为每个目的地创建一个短别名,并告诉它使用哪个私钥。
猜你喜欢
  • 2017-07-27
  • 1970-01-01
  • 2012-10-19
  • 2018-05-19
  • 2022-11-21
  • 1970-01-01
  • 2017-06-13
  • 2012-04-05
  • 1970-01-01
相关资源
最近更新 更多