通过stdin在`ssh-copy-id`中发送密码


11

我需要自动化一些身份部署,最好使用ssh-copy-id

我正在尝试通过stdin提供密码,这可以ssh通过使用-S标志来实现。我知道可以在命令中ssh使用该-o标志发送其他选项,ssh-copy-id但是手册页中没有该标志的用法示例。

因此,我尝试ssh-copy-id使用以下方式通过stdin 传递SSH密码:

$# echo $TMP_PASS | ssh-copy-id -p2222 -i key.pub user@host -o "-S"

但是我得到的是:

/bin/ssh-copy-id: ERROR: command-line: line 0: Bad configuration option: -s

编辑:

我正在尝试通过stdin提供密码,这可以 ssh通过使用-S标志来实现。

这个说法是错误的。我实际上已经从sudo人那里读到了这个标志。

Answers:


15

您可能想尝试安装sshpass,并将您的调用更改为ssh-copy-id

sshpass -p "$TMP_PASS" ssh-copy-id

大声笑,而不是在Mac上,并且在brew install尝试时,我得到“错误:名称为“ sshpass”的无可用公式。我们不会添加sshpass,因为它使SSH新手更容易破坏SSH的安全性。”
tofutim

gist.github.com/arunoda/7790979#installing-with-homebrew上有在OSX上使用自制软件安装的说明, 您只需要运行brew install https://raw.githubusercontent.com/kadwanev/bigboybrew/master/Library/Formula/sshpass.rb
ewatt

2

您在哪里找到有关-S期权的信息?它所做的事情完全不同!它用于多路复用和ControlPath。

SSH是不会接受的标准输入密码以往,所以你应该在你的部署(首选方式),或使用预先安装授权密钥sshpassexpect脚本在许多其他问题描述。


该死的你是对的!我刚刚意识到该-S标志来自sudo:S
2grit

如果我想使用ssh-copy-id在100个主机上安装密钥,并且所有主机都已经具有默认的用户名和密码,那么如何避免ssh-copy-id每次输入相同的密码时都询问我?
realtebo

在两个答案中都已经回答了这一问题-如果需要或需要一些脚本,请使用sshpass。
加库耶
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.