Saya mencoba ssh ke server CentOS yang saya tidak punya kendali atas .. admin telah menambahkan kunci publik saya ke server dan menegaskan kesalahan terletak pada saya, tetapi saya tidak tahu apa yang salah.
Konfigurasi dalam .ssh:
tim@tim-UX31A:~$ cat ~/.ssh/config
User root
PasswordAuthentication no
IdentityFile ~/.ssh/id_rsa
Izin pada file-kunci saya:
tim@tim-UX31A:~$ ls -l ~/.ssh/id_rsa*
-rw------- 1 tim tim 3326 Okt 20 17:28 /home/tim/.ssh/id_rsa
-rw-r--r-- 1 tim tim 746 Okt 20 17:28 /home/tim/.ssh/id_rsa.pub
Log koneksi yang saya tidak bisa mengerti:
tim@tim-UX31A:~$ ssh -vvv [email protected]
OpenSSH_7.2p2 Ubuntu-4ubuntu2.1, OpenSSL 1.0.2g 1 Mar 2016
debug1: Reading configuration data /home/tim/.ssh/config
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug2: resolving "10.0.12.28" port 22
debug2: ssh_connect_direct: needpriv 0
debug1: Connecting to 10.0.12.28 [10.0.12.28] port 22.
debug1: Connection established.
debug1: identity file /home/tim/.ssh/id_rsa type 1
debug1: key_load_public: No such file or directory
debug1: identity file /home/tim/.ssh/id_rsa-cert type -1
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_7.2p2 Ubuntu-4ubuntu2.1
debug1: Remote protocol version 2.0, remote software version OpenSSH_6.6.1
debug1: match: OpenSSH_6.6.1 pat OpenSSH_6.6.1* compat 0x04000000
debug2: fd 3 setting O_NONBLOCK
debug1: Authenticating to 10.0.12.28:22 as 'root'
debug3: hostkeys_foreach: reading file "/home/tim/.ssh/known_hosts"
debug3: record_hostkey: found key type ECDSA in file /home/tim/.ssh/known_hosts:3
debug3: load_hostkeys: loaded 1 keys from 10.0.12.28
debug3: order_hostkeyalgs: prefer hostkeyalgs: [email protected],[email protected],[email protected],ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521
debug3: send packet: type 20
debug1: SSH2_MSG_KEXINIT sent
debug3: receive packet: type 20
debug1: SSH2_MSG_KEXINIT received
debug2: local client KEXINIT proposal
debug2: KEX algorithms: [email protected],ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1,ext-info-c
debug2: host key algorithms: [email protected],[email protected],[email protected],ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,[email protected],[email protected],ssh-ed25519,rsa-sha2-512,rsa-sha2-256,ssh-rsa
debug2: ciphers ctos: [email protected],aes128-ctr,aes192-ctr,aes256-ctr,[email protected],[email protected],aes128-cbc,aes192-cbc,aes256-cbc,3des-cbc
debug2: ciphers stoc: [email protected],aes128-ctr,aes192-ctr,aes256-ctr,[email protected],[email protected],aes128-cbc,aes192-cbc,aes256-cbc,3des-cbc
debug2: MACs ctos: [email protected],[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],hmac-sha2-256,hmac-sha2-512,hmac-sha1
debug2: MACs stoc: [email protected],[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],hmac-sha2-256,hmac-sha2-512,hmac-sha1
debug2: compression ctos: none,[email protected],zlib
debug2: compression stoc: none,[email protected],zlib
debug2: languages ctos:
debug2: languages stoc:
debug2: first_kex_follows 0
debug2: reserved 0
debug2: peer server KEXINIT proposal
debug2: KEX algorithms: [email protected],ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1
debug2: host key algorithms: ssh-rsa,ecdsa-sha2-nistp256
debug2: ciphers ctos: aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,[email protected],[email protected],[email protected],aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,aes192-cbc,aes256-cbc,arcfour,[email protected]
debug2: ciphers stoc: aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,[email protected],[email protected],[email protected],aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,aes192-cbc,aes256-cbc,arcfour,[email protected]
debug2: MACs ctos: [email protected],[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],hmac-md5,hmac-sha1,[email protected],[email protected],hmac-sha2-256,hmac-sha2-512,hmac-ripemd160,[email protected],hmac-sha1-96,hmac-md5-96
debug2: MACs stoc: [email protected],[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],hmac-md5,hmac-sha1,[email protected],[email protected],hmac-sha2-256,hmac-sha2-512,hmac-ripemd160,[email protected],hmac-sha1-96,hmac-md5-96
debug2: compression ctos: none,[email protected]
debug2: compression stoc: none,[email protected]
debug2: languages ctos:
debug2: languages stoc:
debug2: first_kex_follows 0
debug2: reserved 0
debug1: kex: algorithm: [email protected]
debug1: kex: host key algorithm: ecdsa-sha2-nistp256
debug1: kex: server->client cipher: [email protected] MAC: <implicit> compression: none
debug1: kex: client->server cipher: [email protected] MAC: <implicit> compression: none
debug3: send packet: type 30
debug1: expecting SSH2_MSG_KEX_ECDH_REPLY
debug3: receive packet: type 31
debug1: Server host key:
debug3: hostkeys_foreach: reading file "/home/tim/.ssh/known_hosts"
debug3: record_hostkey: found key type ECDSA in file /home/tim/.ssh/known_hosts:3
debug3: load_hostkeys: loaded 1 keys from 10.0.12.28
debug1: Host '10.0.12.28' is known and matches the ECDSA host key.
debug1: Found key in /home/tim/.ssh/known_hosts:3
debug3: send packet: type 21
debug2: set_newkeys: mode 1
debug1: rekey after 134217728 blocks
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug3: receive packet: type 21
debug2: set_newkeys: mode 0
debug1: rekey after 134217728 blocks
debug1: SSH2_MSG_NEWKEYS received
debug2: key: /home/tim/.ssh/id_rsa (0x55ee619ab2b0), explicit, agent
debug2: key: /home/tim/.ssh/id_rsa (0x55ee619bcfa0), agent
debug2: key: tim@Tim-UX31A-Debian (0x55ee619b9370), agent
debug3: send packet: type 5
debug3: receive packet: type 6
debug2: service_accept: ssh-userauth
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug3: send packet: type 50
debug3: receive packet: type 51
debug1: Authentications that can continue: publickey,gssapi-keyex,gssapi-with-mic,password
debug3: start over, passed a different list publickey,gssapi-keyex,gssapi-with-mic,password
debug3: preferred gssapi-keyex,gssapi-with-mic,publickey,keyboard-interactive
debug3: authmethod_lookup gssapi-keyex
debug3: remaining preferred: gssapi-with-mic,publickey,keyboard-interactive
debug3: authmethod_is_enabled gssapi-keyex
debug1: Next authentication method: gssapi-keyex
debug1: No valid Key exchange context
debug2: we did not send a packet, disable method
debug3: authmethod_lookup gssapi-with-mic
debug3: remaining preferred: publickey,keyboard-interactive
debug3: authmethod_is_enabled gssapi-with-mic
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
debug2: we did not send a packet, disable method
debug3: authmethod_lookup publickey
debug3: remaining preferred: keyboard-interactive
debug3: authmethod_is_enabled publickey
debug1: Next authentication method: publickey
debug1: Offering RSA public key: /home/tim/.ssh/id_rsa
debug3: send_pubkey_test
debug3: send packet: type 50
debug2: we sent a publickey packet, wait for reply
debug3: receive packet: type 51
debug1: Authentications that can continue: publickey,gssapi-keyex,gssapi-with-mic,password
debug1: Offering RSA public key: /home/tim/.ssh/id_rsa
debug3: send_pubkey_test
debug3: send packet: type 50
debug2: we sent a publickey packet, wait for reply
debug3: receive packet: type 51
debug1: Authentications that can continue: publickey,gssapi-keyex,gssapi-with-mic,password
debug1: Offering RSA public key: tim@Tim-UX31A-Debian
debug3: send_pubkey_test
debug3: send packet: type 50
debug2: we sent a publickey packet, wait for reply
debug3: receive packet: type 51
debug1: Authentications that can continue: publickey,gssapi-keyex,gssapi-with-mic,password
debug2: we did not send a packet, disable method
debug1: No more authentication methods to try.
Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).
ssh [email protected]
log yang menyebutkan Kerberos server CentOS bisa menjadi Domain Terpadu (AD, IPA, ...). Anda harus mencari tahu pengguna apa yang seharusnya Anda gunakan. Tanyakan pada administrator. Kami misalnya menggunakan IPA sehingga kami memungkinkan pengguna untuk terhubung ke server tertentu dengan akun domain IPA mereka dan pasangan kunci dan jika perlu mereka dapat melakukan sudo. Tidak ada akses root :)Jawaban:
Ini biasanya akan menyelesaikan sebagian besar masalah izin kunci resmi SSH di sisi server , dengan asumsi seseorang tidak membuat perubahan tambahan pada izin.
Jika admin Anda membuat file .ssh / direktori atau .ssh / Authorized_keys sebagai root (yang paling umum bagaimana ini dilakukan), maka memiliki file yang dimiliki oleh pengguna lain (bahkan jika root!) Tidak diperbolehkan.
Userify (disclaimer: co-founder) secara otomatis melakukan hal yang persis sama .. https://github.com/userify/shim/blob/master/shim.py#L285
sumber
sudo chown $USER:$USER ~/ -R; sudo chmod o-rwx ~/ -R
yang akan menghemat waktu mengetik, tetapi mungkin lebih sulit bagi seorang pemula untuk mengertiSaya memiliki masalah yang sama persis pada dua server: Linux yang menjalankan Debian stretch dan pada NAS (Synology DS715)
ternyata dalam kedua kasus, izin direktori home di server salah
auth.log di server sangat membantu
di Linux, ia memiliki bit tulis / grup pada (drwxrwxr - x), jadi saya harus menghapus setidaknya tulisan pada grup (chmod gw ~ /) dan kemudian ia bekerja
pada Synology, untuk alasan apa pun, ada sedikit lengket
Saya harus mengubahnya dengan
dan saya kemudian dapat terhubung tanpa kata sandi
sumber
chmod -t
... Saya berakhir dengan:admin@SYN:~$ ls -ald . .ssh .ssh/* drwxr-xr-x 6 admin users 4096 Jan 10 15:54 . drwx------ 2 admin users 4096 Jan 10 15:54 .ssh -rwx------ 1 admin users 401 Jan 10 15:54 .ssh/authorized_keys -rw------- 1 admin users 1679 Jan 10 15:49 .ssh/id_rsa -rwxr--r-- 1 admin users 396 Jan 10 15:49 .ssh/id_rsa.pub -rwx------ 1 admin users 396 Jan 10 10:04 .ssh/known_hosts
Saat menggunakan CentOS 7, dan saya yakin berlaku untuk OS Linux lain yang menggunakan sshd juga. Dengan akses root, Anda dapat menentukan lebih lanjut tentang mengapa otentikasi mungkin gagal. Untuk melakukan ini:
vi /etc/ssh/sshd_config
SyslogFacility AUTH LogLevel INFO
systemctl restart sshd
tail -l /var/log/messages
Sebagai contoh, saya mengalami beberapa masalah yang sama seperti yang disebutkan di atas.
Dengan menggunakan langkah-langkah ini saya dapat mengonfirmasi bahwa masalahnya adalah izin pada file yang diotorisasi. Dengan mengatur chmod ke 644 pada file kunci resmi pengguna saya, masalahnya telah diperbaiki.
sumber
Sepertinya izin pada
.ssh
folder Anda tidak menyalin + menempel dengan benar. Bisakah Anda menambahkannya lagi?Jika mode ketat diaktifkan maka kami harus memastikan
.ssh
memiliki izin yang benar dari:.ssh/
harus memiliki perms0700/rwx------
.ssh/*.pub
file seharusnya644/rw-r--r--
.ssh/*
(file lain dalam .ssh)0600/rw-------
Bagaimana hal-hal mencari Anda dari segi izin?
sumber
Untuk berjaga-jaga jika seseorang menemukan jawaban ini - tidak ada rekomendasi yang berhasil dalam skenario saya. Pada akhirnya, masalahnya adalah saya telah membuat akun tanpa kata sandi. Setelah saya mengatur kata sandi menggunakan
usermod -p "my password" username
dan kemudian secara paksa membuka kunci akunusermod -U username
semuanya sangat bagus.sumber
Saya punya masalah yang sama , di mana koneksi ssh mencoba kunci
~/.ssh/id_rsa
sebelum tiba-tiba berhenti:Dalam kasus saya, itu karena file kunci publik lama tergeletak di
.ssh
direktori:Memindahkan / menghapus
id_rsa.pub
dari.ssh
direktori memecahkan masalah.Dari apa yang saya mengerti: ketika ada kunci publik yang hadir di sisi klien, SSH 1 memvalidasi kunci pribadi yang menentangnya. Jika gagal, itu tidak akan mencoba menggunakan kunci pribadi untuk menghubungkan dari jarak jauh.
Saya mengirim email ke mailing list openssh: https://lists.mindrot.org/pipermail/openssh-unix-dev/2016-April/035048.html .
sumber
openssh-8.0p1-5.fc30.x86_64
btw. Saya memiliki kunci publik dari server sebelumnya dengan nama yang sama dengan yang baru tergeletak di sekitarfedora@(baloo).sshkey.pub
,, yang berjalan denganfedora@(baloo).sshkey
diteruskan pada baris perintah dengan-i
opsi. Otentikasi gagal dengan kunci server baru yang ditemukan di barufedora@(baloo).sshkey
- kunci RSA.Kami mengalami masalah ini. Izin dan kepemilikan pada file .ssh semuanya benar. Dalam / var / log / pesan yang kami temukan:
SO, solusi untuk pengembang vm di mana kami tidak peduli dengan keamanan adalah menonaktifkan selinux. Edit / etc / sysconfig / selinux dan ubah SELINUX = nonaktif dan reboot.
sumber
Kalau-kalau ini juga menyelamatkan seseorang. Saya mencoba menyalin kunci dari Mesin Ubuntu 18.04 saya ke 2 Server CentOS 7. Saya biasa
ssh-copy-id
mentransfernya. Satu berhasil, satu tidak. Jadi saya pergi melalui semua izin debugging dan tidak menemukan apa pun. Jadi akhirnya saya menarik file/etc/ssh/sshd_config
di kedua server dan melangkah baris demi baris melalui mereka. Akhirnya saya menemukannya, mungkin sesuatu yang seseorang modifikasi jauh sebelum saya mulai bekerja.Satu baca:
AuthorizedKeysFile .ssh/authorized_keys
Dan baca lagi:,
AuthorizedKeysFile ~/.ssh/authorized_keys
yang ada di server yang tidak menerima kunci saya. Jelas melihat antara dua file dan mencatat komentar yang menyatakan pola pencarian default tidak termasuk yang~/
saya hapus dan restart sshd. Masalah terpecahkan.sumber
Juga menemui masalah ini. setroubleshoot sepertinya tidak berfungsi di lingkungan saya sehingga tidak ada catatan log seperti itu di / var / log / messages. Menonaktifkan SELinux bukanlah pilihan bagi saya, jadi saya lakukan
Setelah itu login dengan kunci rsa bekerja dengan baik.
sumber
Alasan dalam kasus saya adalah opsi yang diatur secara khusus
AuthorizedKeysFile
dalam file/etc/ssh/sshd_config
. Itu diatur ke dir home pengguna lain (/home/webmaster/.ssh/authorized_keys
), jadi pengguna yang saya coba masuk tidak memiliki akses ke direktori file /.Setelah mengubahnya dan memulai kembali ssh-server (
service ssh restart
) semuanya kembali normal. Saya bisa masuk dengan kunci pribadi saya sekarang.sumber
Dalam kasus kami, masalahnya terkait dengan fakta bahwa aturan firewall dan NATing kami tidak dipasang dengan benar.
port 22, sedang diarahkan ke server yang salah di mana kunci dan pengguna kami tidak dikenali.
Jika seseorang mencapai titik ini. tcpdump dan telnet bisa menjadi teman Anda
Anda akan melihat bahwa kedua server ini memiliki versi openssh yang berbeda. Ini membantu saya menemukan masalah dengan cukup cepat. Jika host Anda menggunakan versi ssh yang sama, Anda harus mencoba melakukan pelacakan paket di tujuan untuk melihat apakah lalu lintas benar-benar tiba di tujuan.
Ssh dapat menghasilkan banyak lalu lintas yang membuat tcpdump sulit untuk menemukan apa yang Anda cari.
Ini membantu saya
Coba telnet dari 3 server berbeda bukan komputer Anda saat ini @ [mylocalip]. Anda ingin melihat lalu lintas apa yang benar-benar mencapai server Anda.
sumber
Log kesalahan sisi klien berakhir seperti ini:
dapat disebabkan oleh pembatasan sisi server (jarak jauh) pada login root ketika sshd file konfigurasi berisi:
Saran JonCav untuk mengaktifkan logging sangat membantu dalam men-debug masalah seperti itu. Sementara memuntahkan sisi klien tidak membantu, menempatkan berikut ini di file sshd_config server sshd :
akhirnya menghasilkan pesan log yang bermanfaat:
Dalam kasus di mana hanya login root gagal, dan dengan ketentuan bahwa hanya menggunakan otentikasi berbasis kunci untuk login root diizinkan oleh kebijakan keamanan Anda, perubahan ke file sshd_config dapat membantu:
Jarak tempuh Anda mungkin bervariasi, meskipun ini sering membantu, beberapa konfigurasi lain mungkin masih mengganggu menurut komentar yang ditemukan di beberapa file sshd_config :
Bahkan jika Anda tidak dapat dengan mudah mengubah konfigurasi server jarak jauh untuk melakukan debug dengan cara ini, seseorang dapat membuktikan konfigurasi sisi klien sampai batas tertentu dengan menggunakan file identitas yang sama untuk ssh ke akun non-root di server jauh yang sama.
sumber
Saya bisa melihat mengapa keamanan dapat mengganggu orang. Saya baru saja mengalami
ssh won't use my key
masalah lagi. Saya menyelesaikannya dengan masuk ke server jauh dan berjalandan kemudian dari desktop saya, (mencoba ssh ke server)
Di server saya dapatkan
Authentication refused: bad ownership or modes for directory /
Beberapa sysadmin baru telah mengacaukan izin dan kepemilikan, yang saya atasi dengan:
(Saya terbiasa membutuhkan
chmod 0600 ~/.ssh/* ; chmod 0644 ~/.ssh/*.pub
tetapi sshd memeriksa / menemukan izin root adalah yang baru bagi saya.) Sekarang saya akan memeriksa rootkit dan kemudian menghapus dan menginstal ulang pula.sumber
Dalam kasus saya masalahnya adalah dengan shell eksekutif yang salah.
Mengubah / etc / passwd file untuk pengguna itu
sumber
Saya memiliki masalah ini pada CentOS 7. Saya adalah pengguna Linux berbasis Debian yang biasa jadi saya adalah ikan yang keluar dari air. Saya perhatikan bahwa di beberapa server itu bekerja dan hanya dalam satu server tidak. Audit.log mengatakan tidak ada yang berguna dan secure.log tidak memberikan apa-apa juga. Saya menemukan bahwa satu-satunya perbedaan nyata adalah beberapa perbedaan konteks keamanan pada file dan direktori antara yang bekerja dan yang tidak. Dapatkan keamanannya
sudo ls -laZ <user-home>/.ssh
direktori (saya mengasumsikan banyak default di sshd_config).
Anda harus melihat beberapa
ssh_home_t
danuser_home_t
atribut. Jika tidak, gunakanchcon
perintah untuk menambahkan atribut yang hilang.Sebagai contoh
Dalam kasus saya, kecurigaan saya adalah bahwa pengguna dibuat dengan cara yang tidak standar. Rumahnya adalah direktori di
/var/lib
.Info lebih lanjut di: https://www.linuxquestions.org/questions/linux-security-4/selinux-preventing-ssh-login-with-~-ssh-authorized_keys-4175469538/
sumber