【问题标题】:Ant: How to avoid SSH passwords?Ant:如何避免 SSH 密码?
【发布时间】:2011-09-15 03:12:09
【问题描述】:

问题

  • 我们有一个可以完全控制的服务器
  • 我们有一个长而复杂的 shell 脚本,它通过 SCP 和 SSH 与该服务器交互
  • 我们有一个运行脚本的 Ant 目标

简化示例:

<target name="run-script">
    <exec executable="/path/to/script_that_runs_ssh_cmds.sh" />
</target>

此目标失败并出现以下异常:

ssh_askpass: exec(/usr/libexec/ssh-askpass): No such file or directory


问题

经过一番研究,我认为这可以通过生成公钥/私钥对来解决。这样,ssh 命令就不必提示输入密码。假设这个解决方案可以工作,你如何让它让系统上的 SSH 调用使用密钥来代替提示输入密码?是否有可能以我们团队中的任何人都可以从他们的笔记本电脑上成功运行 Ant 目标的方式进行设置?

注意:我们都在运行 OS X 10.6 (Leopard) 并且物理连接到与服务器相同的 LAN。

【问题讨论】:

    标签: macos ant ssh exec scp


    【解决方案1】:

    您可以在~/.ssh 下安装私钥,ssh 会自动查看该目录并使用您安装的密钥。

    在服务器端,将公钥添加到~/.ssh/authorized_keys

    【讨论】:

    • 是的。我按照这些说明进行操作,效果很好! SSH w/o PWD 。 . .现在我有另一个问题:我的同事脚本 SSH 以 root 身份结束。让这个东西作为“普通”用户工作是直截了当的,但你如何做和 root 一样的事情呢?我将 /home/userName/.ssh 复制到 /root/.ssh 并且它不起作用......(这意味着当我作为 userName@server 进行 SSH 时,它不需要密码但是当我使用 root@server 时,它做)。注意:服务器是RedHat
    • 是否需要以root身份进行SSH?如果您以普通用户身份将脚本更改为 SSH 会更好。更不用说远程root登录通常被禁用。
    • 我不想这样做,但他们说这是必要的,因为脚本正在运行特权命令。我们没有禁用远程登录(我们可以完全控制 Linux 服务器)。我的目标是从这个过程中删除用户交互(这样我就可以从我们的 Ant 文件中运行它)并且我想不出一种方法来修改他们的脚本,以便在运行提升的命令时它不会提示输入密码(加上脚本又长又复杂,但 100% 工作)......所以现在,我必须以 root 身份进行 SSH :(
    • 那么,您是否在远程服务器上的/root/.ssh/authorized_keys 中安装了公钥?看看this
    猜你喜欢
    • 2019-02-14
    • 1970-01-01
    • 1970-01-01
    • 2018-01-27
    • 1970-01-01
    • 2014-06-03
    • 2023-03-10
    • 2017-01-24
    • 1970-01-01
    相关资源
    最近更新 更多