`ssh-copy-id`のstdinを介してパスワードを送信します


11

理想的にはを使用して、いくつかのID展開を自動化する必要がありssh-copy-idます。

私は標準入力を介してパスワードを提供しようとしていますが、これはフラグsshを使用することで可能になり-Sます。コマンドでフラグをssh使用するための追加オプションを送信できることは承知していますが、このフラグの使用例はmanページにありません。-ossh-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

編集:

私は標準入力を介してパスワードを提供しようとしていますが、これはフラグsshを使用することで可能になり -Sます。

このステートメントは間違っています。私は実際にこのフラグをsudo人から読んだことがあります。

回答:


15

sshpassをインストールして、次のように呼び出しを変更してみてくださいssh-copy-id

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

笑、Macではなく、brew install試行されたときに「エラー: "sshpass"という名前の使用可能な数式がありません。初心者のSSHユーザーがSSHのセキュリティを台無しにすることがあまりにも簡単になるため、sshpassは追加しません。」
tofutim

ここにosxのhomebrewでインストールする手順があります。gist.github.com/arunoda/7790979#installingbrew install https://raw.githubusercontent.com/kadwanev/bigboybrew/master/Library/Formula/sshpass.rb
with

2

-Sオプションに関する情報はどこで見つけましたか?まったく違うことをします!多重化とControlPathに使用されます。

SSHはstdin パスワードを受け入れません。そのため、他の多くの質問で説明されているように、展開に承認済みのキーをプレインストールするか(推奨方法)、sshpassまたはexpectスクリプトを使用する必要があります。


いまいましい!私は-Sフラグがsudo次のとおりであることを認識しました:S
グリット

ssh-copy-idを使用して100個のホストにキーをインストールする場合、すべてのホストにデフォルトのユーザー名とパスワードがすでに設定されている場合、ssh-copy-idが毎回同じパスワードを要求しないようにするにはどうすればよいですか?
realtebo 2018

それは両方の回答ですでに回答されています-必要な場合またはスクリプトを期待している場合はsshpassを使用してください。
ジャクジェ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.