Saya mencoba membuat skrip shell yang, antara lain, memulai ssh-agent dan menambahkan kunci pribadi ke agen. Contoh:
#!/bin/bash
# ...
ssh-agent $SHELL
ssh-add /path/to/key
# ...
Masalahnya adalah ssh-agent tampaknya memulai $ SHELL (dalam kasus saya, bash) contoh lain dan dari perspektif skrip itu dijalankan segala sesuatu dan ssh-add dan apa pun di bawahnya tidak pernah berjalan.
Bagaimana saya bisa menjalankan ssh-agent dari skrip shell saya dan terus bergerak di bawah daftar perintah?
exit
melakukan trik.Letakkan yang berikut di bagian atas skrip Anda:
Script Anda akan terlihat seperti ini:
Penjelasan
Backticks di sekitar
ssh-agent
mengumpulkan outputnya.eval
mengumpulkan output itu, menyatukannya menjadi satu perintah, dan kemudian mengeksekusi perintah. Kemudian Anda dapat menggunakanssh-add
untuk memberikan kredensial utama Anda.sumber
eval $(ssh-agent)
bash -i
di akhir skrip.Saya cenderung melakukan sesuatu seperti ini dalam skrip yang membutuhkan agen.
Pada dasarnya hal pertama yang dilakukan skrip untuk memeriksa apakah agen berjalan. Jika tidak exec digunakan untuk memulai proses baru di tempat skrip. Agen dimulai, kunci ditambahkan, dan akhirnya, skrip dipanggil lagi (lihat
$0
).sumber
.. "ssh-add ; $0 $*"
, atau.. "ssh-add ; $0 $@"
sebaliknya, yang mungkin berhasil. Yang tidak akan sempurna, tetapi pasti akan berhasil dalam banyak kasus. Solusi terbaik hampir selalu membuat agen Anda berjalan sebelum hal lain, ini hanya sesuatu yang mungkin berguna dalam kasus yang tidak jelas.Saya menemukan ini bekerja untuk saya.
Saya membuat proses ssh-agent, menambahkan kunci, melakukan apa yang perlu saya lakukan, lalu membunuhnya. Tidak perlu memeriksa apakah itu berjalan nanti.
sumber
Lebih baik menggunakan gantungan kunci dalam hal ini
Debian / Ubuntu:
RHEL / Fedora / CentOS
Tambahkan .bashrc Anda yang berikut ini:
sumber
Saya menemukan dengan solusi Zoredache, kuncinya akan tersedia untuk setiap shell yang kebetulan berbagi ssh-agent yang sama dengan shell yang disebut script. Saya ingin menghindari ini dalam skrip yang membutuhkan akses root ke mesin jarak jauh, untuk alasan keamanan yang jelas.
Saya menemukan menempatkan shebang berikut di bagian atas naskah berfungsi:
sumber
Saya sudah mencoba dan banyak dan solusi yang akhirnya berhasil adalah mengganti kata sandi saya dengan string kosong.
sumber