Saya memiliki tetesan Samudra Digital yang saya coba beri akses ssh sendiri. Saya tidak yakin apa yang dilakukan sebelumnya. Saya sudah mencoba menambahkan kunci publik saya melalui Digital Ocean UI. Itu tidak berhasil, saya terus mendapatkan permission denied (publickey)
.
Saya mengakses server melalui konsol lautan Digital dan secara manual menambahkan kunci publik saya ke /root/.ssh/authorized_keys
. Saya kemudian mencoba ssh menggunakan ssh [email protected]
. Itu tidak berhasil (izin ditolak).
Jadi saya mencoba menambahkan pengguna baru, membuat /home/me/.ssh
direktori dengan izin 700
pada .ssh
direktori itu sendiri, dan 600
pada authorized_keys
file tersebut. Lalu saya mencoba ssh [email protected]
. Itu juga tidak berhasil.
Restart daemon ssh juga tidak mengubah apa pun.
Apa yang saya lewatkan?
Edit:
Berikut ini adalah keluaran ssh verbose.
https://gist.github.com/jaesung2061/a37cfd68308414cede8abf7f0137daa9
Edit 2:
LogLevel DEBUG3
keluaran:
sumber
LogLevel DEBUG3
masuksshd_config
). Saya menduga ini adalah masalah izin, tetapi mungkin ada beberapa alasan untuk ini.[date omitted] www sssh[15029]: Connection closed by x.x.x.x port 55519 [preauth]
ls -ld ~ ~/.ssh ~/.ssh/authorized_keys
? Untuk verbose log dari server, modifikasi file yang disebutkan di atas, restart layanan ssh, sambungkan kembali dan posting log (harus juga masukauth.log
.Jawaban:
Konfigurasi Klien
Mempersiapkan
~/.ssh/config
Menyiapkan entri host
ssh
sangat mudah dan akan menghemat banyak masalah. Berikut ini sebuah contoh:Dalam contoh ini, kami mengatur
digitaloceanbox
dangithub
dangithub.com
agar kami dapat melakukan perintah berikut:ssh github
ssh digitaloceanbox
Jika kami ingin masuk sebagai pengguna yang berbeda dari yang ditentukan dalam file konfigurasi, kami hanya meletakkan
user@
di awal:ssh user@digitaloceanbox
Membuat
ssh
kunciPerhatikan bahwa saya telah menentukan path lengkap kunci pribadi yang ingin saya hasilkan ketika diminta oleh
ssh-keygen
. Saya juga mendefinisikan komentar (-C
) yang memungkinkan saya untuk dengan mudah mengidentifikasi kunci pada mesin jarak jauh.Ini akan membuat dua file:
.ssh/digitalocean-rsa
.ssh/digitalocean-rsa.pub
Ketika Anda memberikan
ssh
kunci Anda , pastikan itu.pub
versinya !! Ketika Anda menambahkan ke Anda~/.ssh/config
, pastikan untuk menambahkan kunci pribadi yang benar yang cocok dengan kunci publik yang Anda tambahkan ke sistem.Konfigurasi Server
Sebagian besar instalasi akan datang dengan Otentikasi Kunci Publik diaktifkan. Namun, jika Anda mulai melakukan semua hal dengan sendirinya, Anda mungkin akan mengalami beberapa masalah. Di tempat OP berada dalam masalah mereka, saya sarankan OP menghapus
/root/.ssh/
direktori untuk memulai kembali.Anda tidak disarankan
ssh
untuk mengakses pengguna root di sistem jarak jauh. Dianjurkan agar Andassh
menjadi pengguna lain, dan kemudian naik ke root menggunakan kata sandi Anda (sudo su -
).Tambahkan kunci ke host menggunakan
ssh-copy-id
Terlepas dari apakah Anda memutuskan untuk membuat pengguna lain dan menggunakan
ssh
sebagai pengguna itu, atau pengguna root, berikut ini adalah cara yang disarankan untuk menempatkanssh
kunci di server:ssh-copy-id -i /home/user/.ssh/digitalocean-rsa.pub user@digitaloceanbox
Ini memungkinkan
sshd
untuk membuat direktori dan file yang dibutuhkan dengan izin yang diperlukan. Ini berarti tidak ada peluang bagi Anda untuk mengacaukan izin atau perlu mengingat detailnya. Cukup gunakan alat untuk mengunggah kunci.Nonaktifkan Otentikasi Kata Sandi
Yang sedang berkata, setelah Anda memiliki kunci sendiri dan memverifikasi bahwa Anda dapat terhubung menggunakan kunci, disarankan agar Anda menonaktifkan Otentikasi Kata Sandi di
sshd
dan memulai kembali layanan:/etc/ssh/sshd_config
PasswordAuthentication no
sudo systemctl restart sshd
Bagaimana dengan pengguna baru?
Jika Anda menonaktifkan Otentikasi Kata Sandi, bagaimana Anda dapat memasukkan pengguna baru? Salah satu caranya adalah dengan menambahkan file template ke
/etc/skel
direktori. Setelah Anda mengetikkan satu pengguna, lakukan hal berikut:sudo cp -r .ssh/ /etc/skel/
ls /etc/skel/.ssh
/etc/skel/.ssh/
sehingga kosong, kecuali jika Anda ingin memasukkan sendiri secara otomatis untuk setiap pengguna yang baru dibuat.Saat Anda membuat pengguna baru
sudo useradd -m newuser
, pengguna itu akan memiliki.ssh/authorized_keys
, yang dapat Anda edit dan akan memiliki izin yang tepat.Debugging
Anda dapat menonton
sshd
file log untuk melihat mengapa koneksi gagal atau ditolak:sudo tail -f /var/log/auth.log
Saat Anda menjalankan perintah ini, gunakan terminal lain untuk mencoba login. Sering kali pesan yang diberikan cukup baik untuk membantu menunjukkan masalah, atau menemukan solusi online.
sumber
Ssh cukup pilih-pilih tentang hak kepemilikan, file dan direktori dengan kunci ssh.
~ / .ssh / harus dimiliki oleh pemilik dan memiliki 700 izin. ~ / .ssh / official_keys harus dimiliki oleh pemilik dan memiliki 600 izin.
Jadi, untuk root:
Untuk pengguna saya:
Lalu coba lagi.
Tentu saja Anda juga harus memeriksa / etc / ssh / sshd_config apakah root diizinkan untuk masuk, atau hanya dengan kunci ssh.
Jika Anda memiliki :
maka Anda dapat mengatur:
Dan kemudian restart sshd:
dan coba lagi.
Perhatikan bahwa dengan ssh, daemon sshd dapat dimulai ulang bahkan ketika menggunakan sesi ssh untuk ini. Opshsh dirancang untuk menghadapinya.
Melihat potongan file log yang Anda unggah, tampaknya Anda menggunakan MacOSX? Bisakah Anda membuat kunci ssh baru di sana?
Selain itu, saya mengetahui di masa lalu bahwa ketika saya memiliki lebih dari satu kunci ssh pribadi di komputer lokal saya untuk pengguna saya, bahwa ini kadang-kadang membuat tidak mungkin untuk login jarak jauh dengan ssh. Sangat membantu banyak untuk membuat entri pada komputer lokal di file ~ / .ssh / config, untuk menyelesaikannya. Sebagai contoh :
Setelah itu coba di baris perintah di komputer lokal Anda:
Saat menggunakan kunci ssh, dan juga tidak ada kunci ssh untuk beberapa login lain, Anda dapat, selain entri dengan kunci ssh, juga menentukan login ssh tanpa penggunaan kunci ssh dalam file ~ / ssh / config, misalnya:
Ini berfungsi baik untuk saya. Dimungkinkan juga untuk menentukan kunci mana yang digunakan pada baris perintah:
Ini mungkin membuat debugging lebih mudah, dan pada baris perintah ini harus selalu berfungsi di komputer lokal.
sumber
sudo chmod 700 /home/me/
IdentityFile
garis membuat saya keluar dari kebiasaan selama satu jam.Periksa kembali konfigurasi ssh daemon (harus ada di
/etc/ssh/sshd_config
) dan periksa untuk:Juga periksa file konfigurasi untuk melihat apakah AllowUsers atau AllowGroups telah ditetapkan, karena mereka bertindak sebagai daftar putih untuk pengguna dan grup masing-masing.
Juga, saya perhatikan Anda mencoba menambahkan kunci ke pengguna root. Secara default login root harus dinonaktifkan, tetapi Anda juga dapat mengubahnya melalui bidang PermitRootLogin .
sumber
Permission denied (publickey)
Menurut log yang telah Anda tautkan, saya pikir Anda memiliki masalah di sisi klien tidak menemukan file kunci pribadi .
Pertama periksa file
~/.ssh/id_rsa
ada di mesin lokal Anda, dan apakah yang benar _ (jika Anda memiliki lebih banyak).Periksa
.ssh
izin folder (harusdrwx------
, jika tidak dijalankansudo chmod 700 ~/.ssh
) dan isinya (harus-rw-------
, jika tidak dijalankansudo chmod 600 ~/.ssh/*
) . Terapkan izin yang sama untuk mesin jarak jauh juga.Selain itu, Anda dapat mencoba memaksa menggunakan kunci pribadi yang Anda inginkan , memberikannya langsung
ssh
dengan-i
parameter.Anda dapat menjalankan sesuatu seperti yang berikut:
ssh -i /path/to/your/private-key [email protected]
atau
ssh -i ~/.ssh/id_rsa [email protected]
Anda bisa mendapatkan lebih banyak info tentang ssh manpage (jalankan
man ssh
di terminal Anda) .Juga perlu diingat jika Anda ingin login sebagai
root
pengguna, akun root Anda harus diaktifkan sebelum login, membuat passwd untuknya dengansudo passwd root
atau alat administrasi server Anda (Ubutntu memiliki akun root dinonaktifkan secara default) . Anda bisa mendapatkan info lebih lanjut di Wiki Ubuntu .Semoga ini bisa membantu.
sumber
Saya akhirnya menginstal ulang
openssh-server
yang memperbaiki masalah ini. Solusi yang diberikan semuanya hebat, tetapi mereka tidak berhasil untuk saya. Saya tidak tahu apa yang menyebabkan masalah ini, tetapi saya pikir pengembang sebelumnya mungkin telah mengacaukan konfigurasi dan mengacaukan semuanya dengan sangat buruk.Saya ragu akan ada orang dengan masalah spesifik seperti milik saya. Namun, jika Anda memiliki tetesan Digital Ocean, Anda tidak bisa mendapatkan akses SSH, dan tidak ada solusi yang berhasil, instal ulang server SSH dengan menjalankan perintah ini melalui konsol Digital Ocean. Hati-hati ini adalah proses yang merusak dan akan menghapus file konfigurasi lama
/etc/ssh/
(bukan.ssh
direktori Anda ).Dengan asumsi klien / kunci ssh Anda dalam keadaan teratur, Anda harus dapat SSH ke server Anda.
sumber
Masalah ini muncul bagi saya menggunakan gambar Debian di Digital Ocean. Entah bagaimana selama proses pengaturan singkat, mungkin ketika saya mengatur kata sandi root, pemilik untuk
/root
diubah menjadi penggunadebian
. Saya melihat hal berikut di/var/log/auth.log
:Jul 26 20:58:17 docker sshd[12576]: Authentication refused: bad ownership or modes for directory /root
Hanya menjalankan
chown root:root -R /root
menyelesaikan masalah.HTH
sumber
Baru saja mengalami masalah yang sangat mirip. Ini berfungsi untuk saya - Tambahkan baris ini ke / etc / ssh / sshd_config
Kemudian restart ssh dengan cara biasa.
sumber