Saya mencoba untuk terhubung ke Linode (menjalankan Ubuntu 12.04 LTS) dari mesin lokal saya (juga menjalankan Ubuntu 12.04 LTS)
Saya telah membuat kunci pribadi dan publik pada mesin lokal saya dan menyalin kunci publik saya ke file Lin_'s berwenang saya. Namun, setiap kali saya mencoba ssh ke Linode saya, saya mendapatkan pesan kesalahan Permission denied (publickey)
.
Ini bukan masalah dengan bagaimana ssh diatur pada Linode saya karena saya bisa ssh untuk itu dari mesin Windows saya menggunakan otentikasi kunci.
Dalam .ssh
direktori saya di mesin Ubuntu lokal saya, saya punya file saya id_rsa
dan id_rsa.pub
. Apakah saya perlu membuat file yang diotorisasi pada mesin lokal saya?
EDIT: Ini adalah apa yang saya dapatkan ketika saya menjalankan ssh -vvv -i id_rsa [youruser]@[yourLinode]
:
debug3: authmethod_lookup publickey
debug3: remaining preferred: keyboard-interactive,password
debug3: authmethod_is_enabled publickey
debug1: Next authentication method: publickey
debug1: Offering RSA public key: id_rsa
debug3: send_pubkey_test
debug2: we sent a publickey packet, wait for reply
debug1: Authentications that can continue: publickey
debug2: we did not send a packet, disable method
debug1: No more authentication methods to try.
Permission denied (publickey).
sumber
/var/log/auth.log
) 2) Bagaimana Anda mentransfer kunci publik ke server? Selalu gunakanssh-copy-id
untuk memastikan tentang izin. Direktori rumah Anda,.ssh
direktori danauthorized_keys
file memiliki persyaratan izin yang ketat. (lihat halaman manual darisshd
(8) pada~/.ssh/authorized_keys
). 3) Apakah Anda menghasilkan keypair baru di Ubuntu? Jika Anda menggunakan kembali kunci dari Windows - Anda harus mengubahnya menjadi format OpenSSH terlebih dahulu.ssh -vvv -i .ssh/id_rsa ....
(perhatikan jalan untuk id_rsa!) - silahkan ganti - log tua hanya menunjukkan bahwa "kita" tidak pubkey untuk mengirim.Jawaban:
PubKeyAuthentication
Siapkan klien Anda
ssh-keygen
vim ~/.ssh/config
ssh-copy-id -i /path/to/key.pub SERVERNAME
File konfigurasi Anda dari langkah 2 harus memiliki sesuatu yang mirip dengan yang berikut:
Anda dapat menambahkan
IdentitiesOnly yes
untuk memastikanssh
penggunaanIdentityFile
dan tidak ada keyfile lain selama otentikasi, yang dapat menyebabkan masalah dan bukan praktik yang baik.Penyelesaian masalah
tail -f /var/log/auth.log
(di server) dan pantau kesalahan saat Anda mencoba masukIdentitiesOnly yes
batasi otentikasi untuk menggunakan kunci tunggal yang ditentukan.sumber
IdentityFile
baris di ~ / .ssh / config harus mengarah ke kunci PRIVATE.Terkadang masalah datang dari izin dan kepemilikan. Misalnya, jika Anda ingin masuk sebagai root
/root
,,.ssh
danauthorized_keys
harus milik root. Jika tidak, sshd tidak akan dapat membacanya dan karena itu tidak akan dapat mengetahui apakah pengguna berwenang untuk masuk.Di direktori home Anda:
Adapun hak, pergi dengan 700 untuk
.ssh
dan 600 untukauthorized_keys
sumber
authorized_keys
file saya di luar direktori home terenkripsi saya. Dengan melakukan hal itu, saya secara tidak sengaja mengubah kepemilikanroot:root
.Anda tidak perlu
authorized_keys
pada klien Anda.Anda harus memberi tahu ssh-client untuk benar-benar menggunakan kunci yang Anda buat. Ada beberapa cara untuk melakukannya. Hanya untuk tipe pengujian
ssh -vvv -i .ssh/id_rsa [youruser]@[yourLinode]
. Anda harus memberikan frasa sandi Anda setiap kali Anda ingin terhubung ke server.Jika itu berhasil, Anda dapat menambahkan kunci dengan
ssh-agent
withssh-add .ssh/id_rsa
(Anda harus memberikan frasa sandi hanya sekali untuk ini dan itu akan berfungsi selama Anda tidak keluar / reboot)sumber
~/.ssh/id_rsa
. Juga, penggunaan agen kunci sepenuhnya opsional dan tidak terkait dengan masalah sejauh yang saya bisa lihat.Periksa juga nilai
PasswordAuthentication
di/etc/ssh/sshd_config
dan jikano
diubahyes
. Jangan lupa untuk me-restart layanan ssh setelah itu.sumber
Masalah yang saya miliki adalah menggunakan kunci yang salah pada klien. Saya telah mengganti nama id_rsa dan id_rsa.pub menjadi sesuatu yang lain. Anda dapat mengubah nama mereka kembali ke default, atau ketika Anda mengeluarkan perintah ssh, gunakan seperti ini
sumber
Juga pastikan bahwa direktori home pengguna (di server) benar-benar milik pengguna ssh'ing ke (diatur ke root: root dalam kasus saya).
Seharusnya:
sumber
Saya mengalami masalah ini baru-baru ini dengan server web saya.
Saya biasanya menyimpan daftar kunci resmi di semua server saya
~/.ssh/authorized_keys2
. Dari pengalaman saya,sshd
akan mencari~/.ssh/authorized_keys
atau~/.ssh/authorized_keys2
secara default.Dalam kasus server web saya,
/etc/ssh/sshd_config
memiliki baris inidari pada
Saya menerapkan yang terakhir, me-restart daemon ssh saya, dan menyelesaikan masalah saya login dengan ssh menggunakan pubkey saya.
sumber
Penyebab lain yang mungkin terjadi adalah dengan
AllowedUsers
konfigurasi di/etc/ssh/sshd_conf
. CATATAN: daftar ini dibatasi ruang (tidak dibatasi koma) karena saya belajar dengan cara yang sulit.sumber
Jika semuanya gagal, periksa apakah pengguna login Anda milik ssh's DiizinkanGroup. Artinya, pengguna Anda adalah anggota grup yang ditampilkan di baris berikut di
/etc/ssh/sshd_config
server:sumber
Saya kasus saya, klien adalah ubuntu 14.04lts, server menang 2012 server yang menjalankan cygwin. Saya menggunakan 'ssh administrator @ xxxx', ketika direktori server 2012 di cygwin adalah / home / Administrator. Jadi itu case sensitive, ketika saya mencoba 'ssh Administrator @ xxxx' (perhatikan huruf kapital A di Administrator) maka itu berfungsi dengan baik.
Pesan kesalahan seperti 'pengguna tidak ditemukan' akan menuntun saya ke solusi jauh lebih cepat daripada 'Izin ditolak (publickey, keyboard-interactive)'.
sumber
Saya memiliki masalah yang sama ketika menyalin kunci publik pengguna biasa (misalnya johndoe) dari sistem Centan cPanel ke server Ubuntu di AWS. Seperti yang disarankan oleh gertvdijk di atas, saya memeriksa
/var/log/auth.log
dan cukup yakin katanyaAuthentication refused: bad ownership or modes for directory /home/johndoe
. Ternyata saya salah 777/home/johndoe
ketika mencoba untuk menetapkan/home/johndoe/public_html
sebagai virtualhost Document Root default untuk apache2 (itu tidak diperlukan untuk tugas itu juga).Lihat juga jawabannya di sini dan di sini
Server hanya perlu memiliki kunci publik
.ssh/authorized_keys
dan klien (komputer yang sedang Anda kerjakan) perlu memiliki kunci pribadi (.pem, atau jika menggunakan SFTP dengan Filezilla, .ppk)sumber
Bagi pengguna Putty seperti saya yang datang ke utas ini, Anda juga mungkin mendapatkan kesalahan ini jika Anda lupa menambahkan pengguna pengguna @ Ip!
Lainnya menjadi izin pada file kunci chmod ke 600)
sumber
Inilah yang bekerja untuk saya, perbaikannya bukan milik saya tetapi saya lebih suka menuliskannya di sini kalau-kalau ada orang lain yang memiliki masalah yang sama.
Penulis asli mempostingnya di sini: digital-ocean-public-access-key-deny
Ganti ini
Dengan ini
Simpan file dan mulai ulang ssh
ssh seharusnya bekerja sekarang meminta kata sandi
sumber
Saya memiliki masalah yang sama seperti yang dijelaskan dalam pertanyaan. Output dari mengeksekusi
ssh -vvv -i id_rsa [youruser]@[yourLinode]
di mesin klien mirip dengan yang dijelaskan dalam pertanyaan. Saya memeriksa semua izin file dan direktori seperti yang disarankan dalam jawaban lain, dan mereka benar.Ternyata saat menyalin file yang dihasilkan
id_rsa.pub
ke mesin server, sebagai file~username/.ssh/authorized_keys
, saya tidak sengaja menghapus katassh-rsa
dari awal. Menambahkannya memecahkan masalah.sumber
Berfungsi di Ubuntu 16.04 juga.
Masalahnya ada di dalam
sshd_config
fileBerikut adalah solusi ULTIMATE:
Log sebagai root ke server Ubuntu Anda
Sekarang pergilah ke bagian paling bawah dan ubah nilainya dari "tidak" menjadi "ya".
Seharusnya terlihat seperti ini:
Ubah ke tidak untuk menonaktifkan kata sandi teks yang disetel
berlaku.
Sekarang Anda dapat dengan mudah menggunakan perintah berikut dari mesin LOCAL Anda (alias laptop dll)
Jadi Buka jendela terminal baru dan JANGAN masuk ke server, cukup masukkan perintah ini:
ssh-copy-id john @ serverIPAddress
(Ganti john dengan nama pengguna Anda).
kamu harus pergi untuk pergi
sumber
Beberapa orang bertanya-tanya mungkin telah mengatur akses ssh menjadi kunci hanya pada akun root kemudian membuat pengguna baru dan tidak menyadari bahwa mereka perlu
ssh root@your-ip-address
rsync --archive --chown=[user]:[user] ~/.ssh /home/[user]
logout
Lalu coba lagi. Ganti [pengguna] dengan akun pengguna baru Anda.
Ini biasa terjadi ketika mengatur server baru di DigitalOcean ketika Anda menggunakan ssh-keys pada pengaturan.
https://www.digitalocean.com/community/tutorials/initial-server-setup-with-ubuntu-18-04
sumber
Dalam kasus saya, masalah ini disebabkan oleh menyalin
.ssh
direktori dari mesin yang lebih lama. Ternyata konfigurasi SSH saya yang lebih lama menggunakan kunci DSA yang sudah usang . Beralih ke sepasang kunci baru, kali ini berbasis RSA, memecahkan masalah bagi saya.sumber
Metode berikut mungkin berfungsi jika Anda dapat mengakses machineA dan machineB secara mandiri (mis. Dari machineC).
Jika ssh-copy-id tidak berfungsi, otentikasi kata sandi dapat dinonaktifkan. Berikut ini adalah solusinya .
Memiliki kunci publik machineA di kunci resmi machineB (yaitu ~ / .ssh / otor_keys) akan memungkinkan Anda untuk melakukan ssh dari machineA. Ini juga berlaku untuk scp.
Setelah membuat pasangan kunci menggunakan:
ssh-keygen
Pada machineA , jalankan
cat ~/.ssh/id_rsa.pub
Output sampel:
Salin kunci tercetak ( ⌘ Command+ C, atau CRTL+ C) lalu tambahkan ke file ~ / .ssh / authorized_keys pada mesinB .
Sebagai contoh, jalankan hal berikut di machineB :
sumber