Saya menggunakan Ubuntu 11.10. Saya menggunakan ssh
untuk menghubungkan ke banyak server setiap hari, jadi saya menaruh parameter mereka dalam .ssh/config
file seperti ini:
Host Home
User netmoon
Port 22
HostName test.com
Adakah cara untuk memasukkan kata sandi untuk setiap koneksi dalam file ini, sehingga, ketika server meminta kata sandi, terminal memasukkan kata sandinya dan mengirimkannya ke server?
Saya memerlukan ini karena kadang-kadang saya berdiri jauh dari PC dan ketika saya kembali, ketikkan kata sandi dan tekan Enterterminal bertuliskan CONNECTION CLOSED
.
PS Saya tidak ingin menggunakan pasangan kunci publik / pribadi.
command-line
bash
ssh
remote-access
Netmoon
sumber
sumber
SSH_ASKPASS
.Jawaban:
Menukar keamanan untuk kenyamanan tidak pernah berakhir dengan baik ...
Bisakah Anda menggunakan
ssh-copy-id
dariopenssh-client
paket?Dari
man ssh-copy-id
:sumber
Jika Anda tidak benar-benar ingin menggunakan pasangan kunci publik / pribadi, Anda dapat menulis
expect
skrip untuk memasukkan kata sandi untuk Anda secara otomatis tergantung pada alamat tujuan.Sunting: Maksud saya adalah Anda dapat memiliki skrip yang, di satu sisi, gunakan
expect
untuk memasukkan kata sandi untuk Anda dan, di sisi lain, membaca kata sandi untuk pengguna yang diberikan dan host dari file konfigurasi. Misalnya, skrip python berikut akan berfungsi untuk skenario hari yang cerah:dan format file konfigurasi adalah sebagai berikut:
Catatan: Seperti yang dijelaskan, skrip python perlu menjadi jauh lebih kompleks untuk menangani semua kemungkinan kesalahan dan pesan pertanyaan dari ssh dan semua URL yang mungkin (dalam contoh diasumsikan bahwa itu akan menjadi sesuatu seperti
user@host
, tetapi bagian pengguna tidak t digunakan sebagian besar kali), tetapi ide dasarnya akan tetap sama. Mengenai file konfigurasi, Anda dapat menggunakan file konfigurasi yang berbeda atau menggunakan.ssh/config
dan menulis kode Anda sendiri untuk mengurai file itu dan mendapatkan kata sandi untuk pengguna dan host yang diberikan.sumber
Ada juga
sshpass
program untuk itu. Cara Penggunaan:sshpass -p MyPa55word ssh [email protected]
sumber
sshpass
alih-alihsshpass
), Anda baru saja menyimpan kata sandi Anda ("MyPa55word") di file histori shell Anda..ssh/config
, mengapa tidak ada dalam sejarah shell juga?brew install https://raw.githubusercontent.com/kadwanev/bigboybrew/master/Library/Formula/sshpass.rb
. Lebih lanjut: gist.github.com/arunoda/7790979read -s password; sshpass -p "$password" ssh [email protected]
. Ini akan mencegah kata sandi ditampilkan dalam sejarahBagaimana dengan ProxyCommand:
Anda dapat menggunakan
ssh -W
bukannc
juga:sumber
-W
opsi. Apakah Anda punya solusinya?test.com
meminta kata sandi keHome
kata sandi. Apa gunanya? Apa trik untuk membuatnya bekerja?Tidak. Ini tidak mungkin, saya khawatir.
Satu-satunya alternatif nyata adalah dengan menggunakan kunci pribadi tetapi Anda telah mengatakan Anda tidak ingin (mengapa tidak?).
sumber
Anda dapat membuat penggantian skrip ssh sederhana di / usr / local / bin:
Dan kemudian dalam file ~ / .ssh / config Anda dapat Anda gunakan
sumber
Saya menggunakan aplikasi dari VanDyke Software bernama SecureCRT .
http://www.vandyke.com/products/securecrt/
Ini tidak gratis, tetapi sangat terjangkau. Saya telah menggunakannya selama bertahun-tahun (berjalan pada Windows, atau menggunakan Wine) untuk akses jarak jauh, emulasi terminal, dan (tersebar) manajemen jaringan. Mereka akhirnya merilis versi Linux asli ini pada awal 2011.
Ini memiliki dukungan untuk pengaturan login yang kompleks (atau skrip), kata sandi yang tersimpan (atau sertifikat), tab beberapa sesi, dll.
Saat startup Anda dapat memilih target jarak jauh (dan protokol) mana dari daftar terstruktur (tampilan hierarki) dari mesin jarak jauh yang disimpan (atau lokal), atau cukup buat koneksi (yang kemudian disimpan).
Saya telah menemukannya sangat berguna untuk situs remote dengan otentikasi tingkat lanjut, port non-standar, atau negosiasi akses firewall.
Jika Anda sering melakukan akses jarak jauh (bagian dari peran utama Anda), maka aplikasi ini akan membenarkan biayanya pada bulan pertama penggunaan.
sumber
Menjawab pertanyaan yang Anda ajukan, tidak, tidak mungkin mengonfigurasi kata sandi default di file konfigurasi ssh.
Tetapi jika memang, seperti yang Anda katakan, itu "karena kadang-kadang saya berdiri jauh dari PC dan ketika saya kembali, ketikkan kata sandi dan tekan Enterterminal yang mengatakan
CONNECTION CLOSED
" , lalu mengapa tidak mencegah menutup sesi saja? SSH dapat menjaga koneksi tetap hidup untuk Anda.sumber
Terima kasih, Arek untuk inspirasinya ...
Alih-alih menjalankan proses shell lain, ini hanya fungsi yang berjalan di bash shell saat ini. Ini menjalankan
awk
perintah tunggal untuk mem-parsing file config dan mencari tahu apakah itu harus mengambil kata sandi dari variabel shell atau dari kata sandi yang ditulis cleartext ke dalam file konfigurasi ssh (dengan alihawk
-eval
alihdescribe
karena masalah yang saya tekan menggunakandescribe
).Saya mencoba banyak cara untuk menggunakan
sshpass
langsung dalamssh
file konfigurasi menggunakan ProxyCommand, tetapi tidak ada yang berfungsi seperti yang diharapkan, kecuali ketika saya bisa masuk ke kotak melalui RSA. Tetapi kemudian saya perlu mengirim kata sandi untuk membuka direktori terenkripsi saya. Namun, fungsi saya di bawah ini tampaknya bekerja untuk saya dalam semua kasus, bahkan untuk Cygwin.Maka
~/.ssh/config
bagian yang terlihat seperti ini:Jika
#Passvar
ada di bagian konfigurasi ini menimpa#Password
.$MYPASS_ENVVAR
adalah variabel lingkungan yang menyimpan kata sandi Anda.Nikmati!
sumber
Jawaban @BrunoPereira untuk pertanyaan ini menunjukkan metode alternatif untuk terhubung tanpa secara eksplisit memasukkan kata sandi dan menghindari kunci ssh.
Anda bisa membuat skrip, alias atau fungsi di Anda
~/.bashrc
untuk dengan cepat menjalankan perintah itu.Jelas, ada pertimbangan keamanan yang harus Anda perhitungkan dengan pendekatan ini.
sumber
Berikut variasi rumit saya pada jawaban @ ArekBurdach. Ini menawarkan ekstensi berikut:
ssh
baris perintah; yaitu juga mendukungssh <args> <host> <commands>
sintaksssh
ssh_config
scp
jugassh-wrapper
scp-wrapper
Instalasi
Tetapkan alias di
~/.bashrc
:Konfigurasi
Dengan
IgnoreUnknown
arahan,ssh
tidak mengeluh tentangPassword
arahan yang baru diperkenalkan , jadi (berbeda dengan jawaban @ ArekBurdach), kita dapat menjadikan ini tampak sebagai konfigurasi "nyata". Jika Anda tidak suka ini, itu sepele untuk mengubah skrip kembali ke yang berkomentar.sumber
Jika Anda tidak memiliki akses langsung ke pasangan kunci, Anda bisa mengenkripsi kata sandi di mesin lokal Anda.
Cara untuk melakukannya adalah mengenkripsi kata sandi Anda menggunakan kunci selain dari ProxyCommand @ Wood Wood.
Cara untuk menggabungkan menggunakan pipa:
dimana
sumber
Ada sedikit variasi cara yang dijelaskan di blog tentang cara menggunakan
sshpass
yang dapat ditemukan di sini . Mengingat Anda memiliki kata sandi terenkripsi gpg (bagaimana hal ini dijelaskan dalam blog) Anda bisa melakukan sesuatu seperti ini:dan cukup simpan perintah itu sebagai alias di blog Anda
.bashrc
.Jika Anda ingin menggali melalui koneksi itu Anda bisa melakukan sesuatu seperti
sumber