Saya menggunakan ubuntu 12.04. Saya menggunakan ssh untuk menghubungkan ke banyak server setiap hari, jadi saya menaruh parameternya di file .ssh / config ; seperti ini :
Host server1
User tux
Port 2202
HostName xxx.x.xx.x
Apakah ada cara untuk memasukkan kata sandi dalam file ini, untuk setiap koneksi? Jadi ketika server meminta kata sandi, terminal meletakkan pass-nya dan mengirimkannya ke server, jadi saya tidak perlu mengetik kata sandi setiap kali. Juga, saya tidak ingin menggunakan pasangan kunci publik / pribadi.
Jawaban:
Tidak, Tidak ada metode untuk menentukan atau memberikan kata sandi pada baris perintah secara non-interaktif untuk otentikasi ssh menggunakan mekanisme built-in openssh. Setidaknya tidak satu yang saya tahu. Anda dapat mengubah sandi kata sandi menjadi skrip ekspektasi, tetapi itu juga bukan solusi yang baik.
Anda pasti ingin menggunakan keypairs untuk otentikasi tanpa kata sandi seperti yang dinyatakan Michael, pada akhirnya kunci pribadi cukup banyak kata sandi besar dalam file.
sumber
Untuk menghindari serangkaian komentar: Ya, ini tidak aman (bahkan tidak bisa dibilang tidak aman). Saya akan sangat menyarankan Anda hanya melakukannya dalam situasi lab pada jaringan yang terisolasi atau situasi serupa yang tidak melibatkan server produksi atau server produksi potensial tanpa reset / format penuh.
Saya ingin mengatur ini karena saya tidak berpikir saklar 2950 saya mendukung kunci pribadi / publik dan saya berharap pada titik tertentu untuk mendapatkan pengetahuan itu, tetapi saya belum sampai.
Menggunakan alias dan sshpass ini bisa dilakukan.
Contoh alias saya adalah:
Di mana "cisco" adalah kata sandi. Perhatikan tidak ada ruang antara -p dan kata sandi.
Penggunaan adalah (merujuk pertanyaan):
Catatan: Ini menjawab pertanyaan dalam judul hanya untuk mereka yang menggunakan mesin pencari. Jika Anda menggunakan server seperti contoh pertanyaan, pasangan kunci pribadi / publik dan bukan jawaban ini yang harus digunakan
sumber
Ya, sebagaimana disebutkan di atas tidak ada cara untuk menyimpan kata sandi secara sederhana. Saya akan merekomendasikan menggunakan kunci ssh untuk otorisasi.
pertama, hasilkan kunci Anda:
Kemudian salin kunci di server / desktop Anda:
Itu saja. Anda tidak akan pernah diminta kata sandi lagi.
Saya juga merekomendasikan menghapus otorisasi kata sandi secara umum, tetapi itu terserah Anda.
sumber
sshpass -p $PASSWORD ssh $USERNAME@$HOST "echo `cat ~/.ssh/id_rsa` >> /home/$USERNAME/.ssh/authorized_keys"
tetapi program ini lebih bersih dan membuat niat menjadi jelas.Tidak ada cara untuk melakukan ini dengan ssh, tidak aman seperti yang bisa didapat.
Seperti yang disebutkan Danila, Anda dapat menggunakan skrip ekspektasi, tetapi saya tidak akan repot.
Aku ingin tahu apa yang ingin kamu capai? Apakah Anda ingin melompat dari satu server ke server lainnya? Dalam hal ini Anda ingin mengatur dan menggunakan ssh-agent di workstation Anda dan mengaktifkan meneruskan agen pada host target; dengan cara ini pertukaran kredensial dengan dialihkan ke agen lokal Anda tanpa harus menyalin kunci pribadi Anda.
sumber
Saya menggunakan skrip ini dari
~/.local/bin
direktoriYang memungkinkan saya menentukan frasa sandi seperti
#PS <password>
dalam.ssh/config
file.Namun, seperti semua orang mengatakan, lebih baik untuk digunakan
ssh-keys
denganssh-agent
ketika itu mungkinsumber
Cara yang benar untuk menangani situasi ini adalah dengan menggunakan ssh-agent berbasis sesi. Begini caranya:
Kata sandi akan tetap valid untuk sisa sesi. Anda hanya perlu menjalankan perintah pertama sekali, dan dapat menambahkan kunci sebanyak yang Anda inginkan setelah itu. Ketika sesi terbunuh, begitu juga agen sehingga tidak ada penyimpanan kata sandi yang sulit.
Terkejut bahwa setelah sekian lama jawaban ini tidak ada di sini!
sumber
Anda dapat melakukan ini dengan cara yang lebih aman dengan menggunakan sshpass
Setel kata sandi Anda tanpa riwayat
export PS = your_password ; history -d $ (history 1)
Tetapkan alias host seperti di atas dalam ~ / .ssh / config
Gunakan ssh pass untuk menggunakan variabel lingkungan dan login ke mesin yang diperlukan dalam satu perintah
sshpass -p $ PS ssh host_alias
Lingkungan Anda menyimpan kata sandi Anda dan berisiko bahwa skrip yang mengeksekusi dapat membocorkan kata sandi ini jika Anda tidak tahu apa yang sedang Anda jalankan
sumber
sshpass -p $PS ...