【问题标题】:ssh dynamically from script from any server从任何服务器的脚本动态 ssh
【发布时间】:2015-02-25 13:33:08
【问题描述】:

好的,我已经搜索了几个小时,似乎找不到解决方案。

我在远程服务器上有一个文件,该服务器上的本地用户之一对其具有写入权限。我有证件。要求是:

shell/perl 脚本应该自动登录到服务器并写入该文件。 该脚本应该可以在网络上的任何服务器上运行,而无需安装任何额外的软件包,因为这将需要我使用 sudo,这将再次要求输入密码,因此无法从脚本中运行。

我尝试使用 expect,但服务器一直说找不到 spawn。

请指教。

【问题讨论】:

  • 使用 scp 和密钥身份验证似乎可行?
  • 我不确定你在说什么,但我相信你在谈论公钥身份验证。我确实考虑过,但这也是互动的,不是吗?
  • 使用公钥/私钥身份验证允许在没有密码的情况下进行远程连接。使用 scp 允许通过 ssh 将文件从本地复制到服务器。
  • 是的,但我如何从脚本中做到这一点?
  • scp 不允许附加到远程系统上的现有文件。 sftp 协议支持这一点,但常见的命令行实用程序似乎没有提供附加到文件的命令。

标签: linux ssh remote-server


【解决方案1】:
#!/bin/bash
ssh -l username hostname "password; ~/updatefile.sh params"

没用。

要使用密钥方法,请尝试以下操作:

#!/usr/bin/env ssh-agent /usr/bin/env bash
KEYFILE=`mktemp`
cat << EOF > ${KEYFILE}
-----BEGIN RSA PRIVATE KEY-----
[.......]
EOF
ssh-add ${KEYFILE}

ssh user host command

# Remove the key file.
rm -f ${KEYFILE}

要生成密钥以供使用,请参考以下内容:http://www.ece.uci.edu/~chou/ssh-key.html

【讨论】:

  • 当我从脚本运行它时,它会提示输入密码。
  • 糟糕,抱歉。编辑以提供不同的方法。
  • 谢谢。但它只是给出这个错误并退出:Could not open a connection to your authentication agent.
  • 您需要提供 RSA 私钥。再次编辑以提供有关如何执行此操作的信息。
  • 这正是问题所在。要求是使整个事情自动化,以便从任何服务器运行,而无需在脚本之外进行任何其他设置。 ssh-keygen 是交互式的
猜你喜欢
  • 2013-05-28
  • 2019-04-01
  • 2016-11-26
  • 1970-01-01
  • 2018-07-15
  • 2015-09-04
  • 2017-03-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多