Tidak dapat mengatur login ssh tanpa mengetik kata sandi


8

Saya mengatur ssh login secara otomatis tanpa mengetikkan kata sandi ke server dengan:

cd ~/.ssh

ssh-keygen

ssh-copy-id -i ~/.ssh/id_rsa.pub tim@server1

Ini bekerja di server.

Kemudian saya melakukan hal yang sama pada server yang berbeda.

ssh-copy-id -i ~/.ssh/id_rsa.pub tim@server2

Segera saya ssh tim@server2, tetapi masih membutuhkan kata sandi saya. Apakah saya melakukan sesuatu yang salah? Apa beberapa kemungkinan alasan yang saya tidak berhasil atur di server kedua? (perhatikan bahwa server kedua menjalankan sistem file kerberos dan Andrew)

$ ssh -v tim@server2
OpenSSH_6.6.1, OpenSSL 1.0.1f 6 Jan 2014
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug1: Connecting to server2 [...] port 22.
debug1: Connection established.
debug1: identity file /home/tim/.ssh/id_rsa type 1
debug1: identity file /home/tim/.ssh/id_rsa-cert type -1
debug1: identity file /home/tim/.ssh/id_dsa type -1
debug1: identity file /home/tim/.ssh/id_dsa-cert type -1
debug1: identity file /home/tim/.ssh/id_ecdsa type -1
debug1: identity file /home/tim/.ssh/id_ecdsa-cert type -1
debug1: identity file /home/tim/.ssh/id_ed25519 type -1
debug1: identity file /home/tim/.ssh/id_ed25519-cert type -1
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_6.6.1p1 Ubuntu-2ubuntu2
debug1: Remote protocol version 2.0, remote software version OpenSSH_5.3
debug1: match: OpenSSH_5.3 pat OpenSSH_5* compat 0x0c000000
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: server->client aes128-ctr hmac-md5 none
debug1: kex: client->server aes128-ctr hmac-md5 none
debug1: SSH2_MSG_KEX_DH_GEX_REQUEST(1024<3072<8192) sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_GROUP
debug1: SSH2_MSG_KEX_DH_GEX_INIT sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_REPLY
debug1: Server host key: RSA xxx
debug1: Host 'server2' is known and matches the RSA host key.
debug1: Found key in /home/tim/.ssh/known_hosts:70
debug1: ssh_rsa_verify: signature correct
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: Roaming not allowed by server
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey,gssapi-keyex,gssapi-with-mic,password,keyboard-interactive
debug1: Next authentication method: gssapi-keyex
debug1: No valid Key exchange context
debug1: Next authentication method: gssapi-with-mic
debug1: Unspecified GSS failure.  Minor code may provide more information
No Kerberos credentials available

debug1: Unspecified GSS failure.  Minor code may provide more information
No Kerberos credentials available

debug1: Unspecified GSS failure.  Minor code may provide more information


debug1: Unspecified GSS failure.  Minor code may provide more information
No Kerberos credentials available

debug1: Next authentication method: publickey
debug1: Offering RSA public key: /home/tim/.ssh/id_rsa
debug1: Authentications that can continue: publickey,gssapi-keyex,gssapi-with-mic,password,keyboard-interactive
debug1: Trying private key: /home/tim/.ssh/id_dsa
debug1: Trying private key: /home/tim/.ssh/id_ecdsa
debug1: Trying private key: /home/tim/.ssh/id_ed25519
debug1: Next authentication method: keyboard-interactive
Password:

Saya mencoba metode Anthon menggunakan kunci Diffie-Hellman, tetapi masih menanyakan kata sandi saya.

$ cd ~/.ssh
$ ssh-keygen -t dsa
$ ssh-copy-id -i ~/.ssh/id_dsa.pub tim@server2
$ ssh -v tim@server2
OpenSSH_6.6.1, OpenSSL 1.0.1f 6 Jan 2014
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug1: Connecting to server2 [...] port 22.
debug1: Connection established.
debug1: identity file /home/tim/.ssh/id_rsa type 1
debug1: identity file /home/tim/.ssh/id_rsa-cert type -1
debug1: identity file /home/tim/.ssh/id_dsa type 2
debug1: identity file /home/tim/.ssh/id_dsa-cert type -1
debug1: identity file /home/tim/.ssh/id_ecdsa type -1
debug1: identity file /home/tim/.ssh/id_ecdsa-cert type -1
debug1: identity file /home/tim/.ssh/id_ed25519 type -1
debug1: identity file /home/tim/.ssh/id_ed25519-cert type -1
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_6.6.1p1 Ubuntu-2ubuntu2
debug1: Remote protocol version 2.0, remote software version OpenSSH_5.3
debug1: match: OpenSSH_5.3 pat OpenSSH_5* compat 0x0c000000
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: server->client aes128-ctr hmac-md5 none
debug1: kex: client->server aes128-ctr hmac-md5 none
debug1: SSH2_MSG_KEX_DH_GEX_REQUEST(1024<3072<8192) sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_GROUP
debug1: SSH2_MSG_KEX_DH_GEX_INIT sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_REPLY
debug1: Server host key: RSA ...
debug1: Host 'server2' is known and matches the RSA host key.
debug1: Found key in /home/tim/.ssh/known_hosts:70
debug1: ssh_rsa_verify: signature correct
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: Roaming not allowed by server
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey,gssapi-keyex,gssapi-with-mic,password,keyboard-interactive
debug1: Next authentication method: gssapi-keyex
debug1: No valid Key exchange context
debug1: Next authentication method: gssapi-with-mic
debug1: Unspecified GSS failure.  Minor code may provide more information
No Kerberos credentials available

debug1: Unspecified GSS failure.  Minor code may provide more information
No Kerberos credentials available

debug1: Unspecified GSS failure.  Minor code may provide more information


debug1: Unspecified GSS failure.  Minor code may provide more information
No Kerberos credentials available

debug1: Next authentication method: publickey
debug1: Offering DSA public key: /home/tim/.ssh/id_dsa
debug1: Authentications that can continue: publickey,gssapi-keyex,gssapi-with-mic,password,keyboard-interactive
debug1: Offering RSA public key: /home/tim/.ssh/id_rsa
debug1: Authentications that can continue: publickey,gssapi-keyex,gssapi-with-mic,password,keyboard-interactive
debug1: Trying private key: /home/tim/.ssh/id_ecdsa
debug1: Trying private key: /home/tim/.ssh/id_ed25519
debug1: Next authentication method: keyboard-interactive
Password:

Apakah direktori rumah Anda dipasang setelah Anda masuk?
muru

Setelah setiap login di masa lalu, rumah saya selalu dipasang.
Tim

Ya, setelah Anda login, Anda mendapatkan direktori home Anda - tetapi bagaimana dengan sebelum login selesai? (Pertimbangkan direktori rumah terenkripsi, atau direktori home jaringan, dll.)
muru

Saya dengar server2menggunakan sistem file Andrew. Apakah itu berarti rumah saya tidak di-mount sebelum login selesai? Bagaimana saya bisa menemukannya untuk pertanyaan Anda?
Tim

Saya tidak yakin bagaimana sistem file Andrew bekerja, tetapi jika Anda memiliki login lain di server yang sama, gunakan dan lihat apakah Anda dapat melihat isi timdirektori home.
muru

Jawaban:


10

Anda menyebutkan bahwa server kedua menggunakan Andrew File System (AFS).

Saya belum bekerja dengan itu, tetapi dari apa yang saya pahami, AFS adalah sistem file yang diamankan Kerberos yang membutuhkan tiket kerberos untuk dapat bekerja. Itu berarti Anda harus masuk ke ranah Kerberos situs Anda agar dapat mengakses direktori home Anda.

Jika Anda masuk dengan kata sandi, server2kemungkinan besar diatur agar Anda masuk ke wilayah Kerberos Anda melalui PAM. Namun, jika Anda menggunakan kunci SSH, maka server2tidak akan mendapatkan informasi yang diperlukan untuk melakukan itu, dan Anda tidak akan dapat mengakses direktori home Anda.

Untungnya, dari ssh -voutput di pertanyaan Anda, kami dapat menyimpulkan bahwa server Anda telah GSSAPImengaktifkan otentikasi. Ini akan memungkinkan Anda untuk melakukan login tanpa kata sandi, asalkan Anda memiliki tiket kerberos yang valid untuk wilayah Anda. Lakukan hal berikut:

  • Masuk ke server2, dan jalankan klistprogram. Ini akan mengembalikan sesuatu di sepanjang baris berikut:

    Ticket cache: FILE:/tmp/krb5cc_2000
    Default principal: wouter@EXAMPLE.ORG
    
    Valid starting     Expires            Service principal
    28-05-15 15:01:31  29-05-15 01:01:31  krbtgt/EXAMPLE.ORG@EXAMPLE.ORG
        renew until 29-05-15 15:01:28
    28-05-15 15:02:04  29-05-15 01:01:31  IMAP/example.org@EXAMPLE.ORG
        renew until 29-05-15 15:01:28
    

    cari baris yang dimulai dengan Default principal:. Ini memberi tahu Anda apa prinsip kerberos Anda (dalam contoh di atas, itu wouter@EXAMPLE.ORG). Tulis ini. Perhatikan bahwa ini bukan alamat email, dan sensitif huruf; yaitu, kepala sekolah berakhir dengan EXAMPLE.ORG, bukan example.org.

  • Di mesin klien Anda, jalankan kinitdengan nama kepala sekolah Anda (yaitu, dalam contoh di atas, itu akan menjadi kinit wouter@EXAMPLE.ORG). Jika semuanya berjalan dengan baik, saat Anda menjalankan klistlagi sekarang, Anda akan melihat bahwa Anda memiliki cache tiket di mesin lokal Anda.
  • Jika sekarang Anda menjalankan ssh -K server2, Anda harus dapat masuk, dan sistem seharusnya tidak meminta kata sandi.

Harap dicatat bahwa karena cara kerja Kerberos, cache tiket memiliki validitas terbatas. Tidak mungkin untuk meminta cache tiket dengan validitas lebih lama dari apa yang dikonfigurasi oleh administrator ranah (yang biasanya sekitar 10 jam atau lebih). Setelah tiket Anda kedaluwarsa, Anda harus berlari kinitlagi, dan memasukkan kata sandi Anda sekali lagi.


Terima kasih. "Di mesin klien Anda, jalankan kinit", maksud Anda saya harus menginstal Kerberos di Ubuntu lokal saya?
Tim

Bagian dari alat kerberos, ya. Anda akan menemukan alat yang diperlukan dalam krb5-userpaket.
Wouter Verhelst

Haruskah saya menggunakan rsa atau dsa saat membuat kunci publik dan menyalinnya ke server? (Saya mengikuti saran Anthon untuk menggunakan dsa sekarang)
Tim

Karena AFS di server, Anda tidak dapat menggunakan kunci publik SSH, Anda harus menggunakan kerberos sebagai gantinya. Jadi tidak masalah ;-)
Wouter Verhelst

Apakah GSSAPI, dsa, dan rsa semua metode otentikasi?
Tim

5

Anda harus mencoba terhubung ke server2 dengan:

ssh -v tim@server2

dan bandingkan dengan yang sama, menghubungkan ke server1ini akan memberi tahu Anda secara tepat di mana kedua server berbeda.

Kemungkinan besar ada perbedaan /etc/ssh/sshd_configpada kedua mesin. di mana server2atau Anda ~/.sshmemiliki masalah aksesibilitas (tidak cukup terbatas).

Dari -voutput Anda dapat melihat bahwa Anda menawarkan kunci pribadi RSA untuk memverifikasi terhadap (dalam /home/tim/.ssh/id_rsa), tetapi sepertinya server2hanya mendukung Diffie-Hellman (dan mencoba /home/tim/.ssh/id_dsayang mungkin bahkan tidak ada di sana).


terima kasih, saya memperbarui dengan menjalankan perintah Anda. Tidak yakin apa artinya
Tim

@Tim memperbarui jawaban saya, Anda harus memeriksa dengan administrator server2 mengapa tampaknya tidak mendukung kunci privat / publik RSA.
Anthon

Selain bertanya kepada admin (yang saya pikir tidak mungkin untuk membuat perubahan berdasarkan pengalaman saya), Apakah ada cara untuk bekerja dengan apa yang diharapkan oleh server?
Tim

@Tim, pertama pastikan bahwa ~/.sshdi server memang sudah menginstal kunci resmi Anda ( ~/.ssh/authorized_keys). Maka apa yang bisa Anda coba lakukan adalah ssh-keygenmenghasilkan pasangan kunci diffie-hellman menggunakan ssh-keygen -t dsadan menyalinnya.
Anthon

(1) Ada file ~/.ssh/authorized_keysdi server. Apakah itu berarti telah menginstal kunci resmi? (2) bagaimana saya harus menyalin pasangan kunci diffie-hellman yang dihasilkan ke server? oleh scp ~/.ssh/id_dsa.pub tim@server2:~/.ssh/authorized_keys? akankah itu menimpa ~/.ssh/authorized_keysdi server?
Tim

4

Tambahkan entri berikut di mesin klien yang Anda coba ssh.

file konfigurasi: /etc/ssh/ssh_config

GSSAPIAuthentication no

Setelah itu Anda akan dapat ssh ke mesin.

Jika Anda tidak memiliki izin edit untuk file itu, Anda juga dapat menambahkan

Host *
  GSSAPIAuthentication no

to ~/.ssh/config(buat file ini jika tidak ada)

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.