Kirim kata sandi melalui stdin di `ssh-copy-id`

11

Saya perlu mengotomatiskan beberapa penyebaran identitas, idealnya menggunakan ssh-copy-id.

Saya mencoba memberikan kata sandi melalui stdin, yang dimungkinkan sshdengan menggunakan -Sflag. Saya sadar bahwa saya dapat mengirim opsi tambahan untuk sshmenggunakan -oflag dalam ssh-copy-idperintah, tetapi tidak ada contoh penggunaan flag ini di halaman manual.

Jadi saya sudah mencoba untuk melewatkan kata sandi SSH ssh-copy-idmelalui stdin menggunakan:

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

Tapi yang saya dapatkan adalah:

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

EDIT:

Saya mencoba memberikan kata sandi melalui stdin, yang dimungkinkan sshdengan menggunakan -Sflag.

Pernyataan ini salah. Saya sebenarnya sudah membaca bendera ini dari sudomanusia;

2grit
sumber

Jawaban:

15

Anda mungkin ingin mencoba menginstal sshpass, dan mengubah panggilan Anda ke ssh-copy-id:

sshpass -p "$TMP_PASS" ssh-copy-id
Dhag
sumber
lol, bukan pada mac dan ketika brew installdicoba, saya mendapatkan "Kesalahan: Tidak ada formula yang tersedia dengan nama" sshpass "Kami tidak akan menambahkan sshpass karena itu membuat terlalu mudah bagi pengguna SSH pemula untuk merusak keamanan SSH."
tofutim
Ada instruksi untuk menginstalnya dengan homebrew di osx di sini gist.github.com/arunoda/7790979#installing-with-homebrew Anda hanya perlu menjalankanbrew install https://raw.githubusercontent.com/kadwanev/bigboybrew/master/Library/Formula/sshpass.rb
ewatt
2

Di mana Anda menemukan informasi tentang -Sopsi? Itu melakukan sesuatu yang sangat berbeda! Ini digunakan untuk multiplexing dan ControlPath.

SSH tidak akan menerima password pada stdin pernah , sehingga Anda harus pra-instal kunci yang berwenang dalam penyebaran Anda (cara yang disukai) atau penggunaan sshpassatau expectskrip seperti yang dijelaskan dalam banyak pertanyaan lainnya.

Jakuje
sumber
Sialan kau benar! Saya baru menyadari bahwa -Sbendera itu dari sudo: S
2grit
Jika saya ingin menginstal kunci saya di 100 host, menggunakan ssh-copy-id, memiliki semua host yang sudah memiliki nama pengguna dan kata sandi standar, bagaimana cara menghindari ssh-copy-id meminta saya setiap kali kata sandi yang sama?
realtebo
Itu sudah dijawab di kedua jawaban - gunakan sshpass jika Anda harus atau skrip yang diharapkan.
Jakuje