Jika saya menjalankan ini:
ssh user@server 'mysql -u user -p'
Ketika ia meminta saya untuk MySQL password, dan aku mulai mengetik, sandi terlihat pada layar. Bagaimana saya bisa mencegah hal ini? Jika saya log in melalui ssh
dan kemudian mengeksekusi perintah MySQL, semuanya bekerja dengan baik.
Jika anda memberikan perintah remote untuk menjalankan, SSH doesn't mengalokasikan tty, sehingga perintah jarak jauh yang mampu menonaktifkan echo. Anda dapat memaksa SSH untuk memberikan tty menggunakan -t
pilihan:
ssh -t user@server 'mysql -u user -p'
Setara opsi (untuk -o
atau untuk config file) adalah RequestTTY
. I'd hati-hati terhadap menggunakannya di config karena hal ini dapat memiliki efek yang tidak diinginkan untuk non-interaktif perintah.
Jika anda bisa percaya [] komputer remote's security, anda dapat menyimpan password dalam benar dilindungi pilihan file, seperti yang disarankan dalam [End-User Pedoman untuk Keamanan Password*]1 bab manual, tanpa perlu untuk berkomunikasi melalui ssh
atau untuk mengetik setiap waktu.
Secara khusus, anda dapat menambahkan garis di [klien] bagian dari file .saya.cnf
di direktori home anda:
[client]
password=your_pass
Tentu saja anda harus menjaga file agar tidak dapat diakses oleh siapa pun kecuali diri anda sendiri, dengan menetapkan modus akses file untuk 400 atau 600 dengan, misalnya
chmod 600 ~/.my.cnf
Kemudian anda dapat menggunakan sesuatu seperti
ssh user@server 'mysql -u user110971 --defaults-file=/home/user110971/mysql-opts'
di mana user110971
adalah username dari akun anda.
ssh -t
)Masalah ini terjadi setiap kali anda mengirim perintah melalui ssh
dan anda perlu untuk memasukkan input karena, secara default, ssh
tidak akan mengalokasikan pseudo-tty.
Anda dapat memaksa tty alokasi dengan pilihan -t
, (bahkan lebih dari satu jika diperlukan):
-t
Kekuatan pseudo-tty alokasi. Ini dapat digunakan untuk mengeksekusi sewenang-wenang layar program berbasis pada mesin remote, yang dapat sangat berguna, misalnya ketika menerapkan menu layanan. Beberapa
-t
pilihan gaya tty alokasi, bahkan jika ssh tidak memiliki lokal tty.
Seperti yang dapat anda baca di Debian post (Jul_11_2008) tentang sudo
, itu adalah sebuah isu lama yang suka kambuh:
ssh user@server "sudo ls" password: password
Dan kata sandi ditampilkan anda
solusinya adalah untuk memaksa ssh untuk mengalokasikan pseudo-tty, dengan -t bendera:
ssh -t pengguna@server sudo ls
*[]* Jika anda dapat mengandalkan meninggalkan password dalam sebuah file yang hanya dapat diakses oleh anda dan root pada kerja* klien. Jika itu adalah mungkin untuk me-reboot komputer remote mengubah OS atau menghapus HDD, komputer dapat't dianggap benar-benar aman... tapi dalam hal ini database itu sendiri tidak akan aman.