Saya tahu ada lusinan pertanyaan di sini tentang cara menyambung ke server SSH tanpa mengetik kata sandi Anda setiap waktu , dan jawabannya selalu "gunakan kunci publik." Yah, saya menemukan diri saya dalam keadaan langka di mana itu benar-benar bukan pilihan. Untuk beberapa alasan yang tidak dapat dijelaskan, daemon OpenSSH pada server yang saya coba sambungkan telah dikonfigurasi
RSAAuthentication no
PubkeyAuthentication no
di /etc/ssh/sshd_config
. Saya tidak memiliki akses administratif di server sehingga saya tidak dapat mengubah ini atau opsi konfigurasi server lainnya. (Saya tentu saja memiliki kontrol penuh atas konfigurasi klien: OpenSSH 5.8 di Linux.)
Apa saja opsi saya, dan khususnya, apa opsi paling aman, untuk menghindari keharusan mengetikkan kata sandi setiap kali saya ingin SSH masuk ke server ini? Saya menjaga komputer saya sendiri cukup aman, jadi mari kita asumsikan risiko keamanan menyimpan kata sandi dalam file di klien cukup rendah, jika memang diperlukan.
Metode otentikasi lain yang dapat diterima server ternyata adalah API GSS (yang saya tidak tahu tentang), keyboard interaktif (yang saya juga tidak tahu tentang), dan kata sandi. Berikut adalah beberapa opsi konfigurasi yang relevan:
#ChallengeResponseAuthentication yes
#KerberosAuthentication no
GSSAPIAuthentication yes
GSSAPICleanupCredentials yes
#UsePAM no
dan di sini adalah -vv
jejak debug ( ):
debug1: Authentications that can continue: gssapi-with-mic,password,keyboard-interactive
debug1: Next authentication method: gssapi-with-mic
debug1: Unspecified GSS failure. Minor code may provide more information
Credentials cache file '/tmp/krb5cc_1000' not found
debug1: Unspecified GSS failure. Minor code may provide more information
Credentials cache file '/tmp/krb5cc_1000' not found
debug1: Unspecified GSS failure. Minor code may provide more information
debug1: Unspecified GSS failure. Minor code may provide more information
debug2: we did not send a packet, disable method
debug1: Next authentication method: keyboard-interactive
debug2: userauth_kbdint
debug2: we sent a keyboard-interactive packet, wait for reply
debug1: Authentications that can continue: gssapi-with-mic,password,keyboard-interactive
debug2: we did not send a packet, disable method
debug1: Next authentication method: password
/etc/krb5.keytab
? GSSAPI (Kerberos) bisa sederhana untuk mengatur sisi klien; Saya harus meminta nama host server. (Juga:keyboard-interactive
sangat mirip denganpassword
, kecuali tidak terbatas pada satu prompt "Kata sandi:".)/etc/krb5.keytab
, tetapi memang ada/etc/krb5/krb5.keytab
. Saya tidak memiliki akses ke konten. Nama servernyasftp.pass.psu.edu
(saya rasa tidak ada salahnya memberikan nama itu) jika itu membantu Anda menjelaskan prosedurnya.Jawaban:
Dalam hal ini, menulis (atau merekam dengan lebih baik) skrip harapan akan menjadi salah satu pilihan Anda.
Setiap sistem berbeda sehingga tidak akan ada skrip, tetapi dengan ekspektasi otomatis sangat mudah untuk merekam skrip untuk tujuan ini.
sumber
Dari informasi yang dikumpulkan sejauh ini, server
sftp.pass.psu.edu
mendukung otentikasi Kerberos 5 (GSSAPI) dan ada didce.psu.edu
ranah.Kerberos sangat umum di jaringan dengan banyak server dan workstation; banyak lembaga pendidikan besar yang mengaturnya. Satu jika kelebihannya dibandingkan otentikasi kunci publik adalah bahwa satu
kinit
secara otomatis memberikan kredensial untuk semua mesin di ranah Kerberos, tanpa harus menyalin kunci publik untuk masing-masing. Lainnya adalah dukungan protokol - kredensial Kerberos yang sama dapat digunakan dengan lebih dari 30 protokol (mail, sistem file, database ...), bukan hanya SSH.(Mengenai "admin Windows-only clueless":
dce.psu.edu
ranah sebenarnya tampaknya didasarkan pada Active Directory dan di-host oleh server Windows.)Coba ikuti langkah-langkah ini:
Masuk ke Kerberos. (Alat
kinit
danklist
mungkin dalam "krb5-user" atau paket serupa, jika belum termasuk dalam sistem.)Jika tidak ada kesalahan yang ditampilkan, login berhasil.
klist
harus memperlihatkankrbtgt/dce.psu.edu@...
item " ".Sekarang terhubung ke server SSH, dengan
-vv
opsi; jika otentikasi berhasil, bagus.Jika tidak, Anda mungkin harus mengedit
/etc/krb5.conf
file Anda . Di bawah[domain_realm]
bagian ini, tambahkan berikut ini:Dengan pengaturan Krb5 default, tiket yang diperoleh di # 1 harus valid selama 10 jam, dan dapat diperpanjang hingga seminggu. Saya tidak punya cara memverifikasi pengaturan.
Jika Anda ingin menyimpan kata sandi dalam sebuah file, sebuah simpel
kinit your_principal < password.txt
harus berfungsi, meskipun tidak sepenuhnya dapat diandalkan.Dengan
ktutil
dimungkinkan untuk membuat "keytab" untuk digunakan, bukan kata sandi.dan masuk menggunakan:
sumber
ssh -vv
mirip dengan jejak saya diposting kecuali saya mendapatkandebug1: Unspecified GSS failure. Minor code may provide more information\n Server not found in Kerberos database
bukannya hal tentang file cache kredensial tidak ditemukan.host/sftp.pass.psu.edu
, tetapi nama aslinya seharusnyahost/lutz.cac.psu.edu
. Anda dapat menyiasatinya dengan menambahkan "128.118.2.85 sftp.pass.psu.edu
" ke / etc / hosts Anda, tetapi ini agak jelek - akan jauh lebih baik jika admin memperbaiki server ...host/lutz.cac.psu.edu
danhost/sftp.pass.psu.edu
) dalam keytab tunggal. (Versi sebelumnya hanya menggunakan yang pertama.)/etc/hosts
seperti yang disarankan saya dapatkandebug1: Unspecified GSS failure. Minor code may provide more information Generic error (see e-text)
. Tidak ada hal lain dalam output yang relevan dengan kesalahan.Saya akan mempertimbangkan solusi campuran, di mana Anda memasukkan kata sandi sekali saja, dan komputer memelihara soket ke server SSH jarak jauh. Anda dapat mengikuti langkah-langkah ini untuk menyiapkan
ControlMaster
hanya karena alasan itu.sumber
screen
untuk melindungi cangkang dari penghentian koneksi putus atau hangup.