Jawaban:
Untuk setiap pengguna: mereka harus membuat (pada mesin lokal mereka) keypair menggunakan ssh-keygen -t rsa
( rsa
dapat diganti dengan dsa
atau rsa1
juga, meskipun opsi-opsi itu tidak dianjurkan). Kemudian mereka perlu memasukkan konten kunci publik mereka ( id_rsa.pub
) ke ~/.ssh/authorized_keys
dalam server yang sedang login.
Saya sebenarnya lebih suka ssh-copy-id , sebuah skrip yang ditemukan di * nix secara default (dapat dimasukkan ke Mac OS X dengan cukup mudah juga) yang secara otomatis melakukan ini untuk Anda. Dari halaman manual:
ssh-copy-id adalah skrip yang menggunakan ssh untuk masuk ke mesin jarak jauh (mungkin menggunakan kata sandi login, jadi otentikasi kata sandi harus diaktifkan, kecuali jika Anda telah menggunakan beberapa identitas dengan cerdas)
Itu juga mengubah izin dari rumah pengguna jarak jauh, ~ / .ssh, dan ~ / .ssh / berwenang_keys untuk menghapus kemampuan menulis grup (yang sebaliknya akan mencegah Anda dari login, jika sshd jarak jauh telah menetapkan StrictModes dalam konfigurasinya).
Jika opsi -i diberikan maka file identitas (default ke ~ / .ssh / identity.pub) digunakan, terlepas dari apakah ada kunci di ssh-agent Anda.
Hum, jangan mengerti. Cukup buat kunci dan mulailah. :) HOWTO Selain itu Anda bisa melarang login melalui kata sandi. Dalam contoh / etc / ssh / sshd_config:
PasswordAuthentication no
Ini cukup mudah dilakukan - ada langkah-langkah sederhana yang dapat ditemukan di sini .
Poin utamanya adalah:
ssh-keygen
di mesin Anda. Ini akan menghasilkan kunci publik dan pribadi untuk Anda.~/.ssh/id_rsa.pub
) ke ~/.ssh/authorized_keys
pada mesin jarak jauh.Penting untuk diingat bahwa ini akan memberi siapa pun yang memiliki akses ke kunci privat pada mesin Anda akses yang sama ke mesin jarak jauh, jadi ketika membuat pasangan kunci Anda dapat memilih untuk memasukkan kata sandi di sini untuk keamanan ekstra.
Untuk pengguna Windows untuk mengatur dempul
Untuk meringkas apa yang dikatakan orang lain, mengatur kunci SSH mudah dan tidak ternilai.
Pada mesin yang Anda akan SSHing dari, Anda perlu membuat pasangan kunci Anda:
claudius:~$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/dinomite/.ssh/id_rsa): <ENTER>
Enter passphrase (empty for no passphrase): <PASSPHRASE>
Enter same passphrase again: <PASSPHRASE>
Your identification has been saved in /home/dinomite/.ssh/id_rsa.
Your public key has been saved in /home/dinomite/.ssh/id_rsa.pub.
The key fingerprint is:
a3:93:8c:27:15:67:fa:9f:5d:42:3a:bb:9d:db:93:db dinomite@claudius
Tekan saja enter di mana dicatat dan masukkan frasa sandi ketika diminta - idealnya ini berbeda dari kata sandi login reguler Anda pada host saat ini dan yang Anda akan SSHing.
Berikutnya, Anda perlu menyalin kunci Anda hanya dihasilkan ke host yang ingin Anda SSH ke . Sebagian besar distribusi Linux memiliki alat ssh-copy-id
untuk melakukan ini:
claudius:~$ ssh-copy-id caligula.dinomite.net
Now try logging into the machine, with "ssh 'caligula.dinomite.net'", and check in:
.ssh/authorized_keys
to make sure we haven't added extra keys that you weren't expecting.
Jika distribusi Anda tidak memilikinya, maka Anda harus menyalin kunci ke host tujuan dan menambahkannya ke file (mungkin ada) .ssh/authorized_keys
:
claudius:~$ scp .ssh/id_dsa.pub caligula.dinomite.net:
id_dsa.pub 100% 1119 1.1KB/s 00:00
claudius:~$ ssh caligula.dinomite.net
Last login: Sat May 9 10:32:30 2009 from claudius.csh.rit.edu
Caligula:~$ cat id_dsa.pub >> .ssh/authorized_keys
Terakhir, untuk mendapatkan manfaat maksimal dari kunci SSH, Anda harus menjalankan agen SSH. Jika Anda menggunakan lingkungan desktop (Gnome, KDE, dll.) Maka hanya logout dan kembali akan memulai agen SSH untuk Anda. Jika tidak, Anda dapat menambahkan berikut ke shell Anda berkas RC ( .bashrc
, .profile
, dll):
SSHAGENT=/usr/bin/ssh-agent
SSHAGENTARGS="-s"
if [ -z "$SSH_AUTH_SOCK" -a -x "$SSHAGENT" ]; then
eval `$SSHAGENT $SSHAGENTARGS`
trap "kill $SSH_AGENT_PID" 0
fi
Ini dimaksudkan sebagai daftar periksa. Jika seseorang mengikutinya poin demi poin, gotcha paling umum untuk login tanpa kata sandi harus dicakup. Sebagian besar poin ini disebutkan di tempat lain; ini adalah agregasi.
Harus ada ~/.ssh
direktori chmod 700
di setiap mesin di bawah akun yang akan berasal atau menerima koneksi.
Kunci (pribadi) harus dibuat tanpa frasa sandi, atau agen dapat dimulai yang akan menyimpan versi yang didekripsi dari kunci penahan frasa sandi untuk digunakan klien. Mulai agen dengan ssh-agent $SHELL
. Itu $SHELL
bagian yang membuatku butuh waktu untuk menemukannya. Lihat halaman manual karena ada detail yang beraneka ragam jika Anda ingin menggunakan agen.
Jangan lupa bahwa secara default kunci lemah (<2048 bit DSA) tidak diterima oleh sshd versi terbaru.
Hal-hal berikut harus dilakukan pada mesin sisi klien untuk memulai koneksi.
Kunci pribadi Anda harus ditempatkan di ~/.ssh/id_rsa
atau ~/.ssh/id_dsa
sesuai kebutuhan. Anda dapat menggunakan nama lain, tetapi kemudian harus disertakan pada opsi -i pada perintah ssh pada mesin asal untuk secara eksplisit menunjukkan kunci pribadi.
Kunci pribadi Anda harus chmod 600
.
Periksa apakah folder rumah Anda chmod 700
.
Sekarang untuk memungkinkan mesin menerima permintaan. Model umum adalah di mana admin memberi Anda akses ke mesin yang bukan milik Anda (seperti shared web hosting). Karena itu, ide dengan ssh adalah Anda menawarkan kunci publik kepada siapa pun yang memberi Anda akun. Itu sebabnya Anda biasanya tidak menaruh kunci pribadi pada mesin yang menerima permintaan. Tetapi, jika Anda ingin mesin ini melakukan ssh keluar juga, maka Anda harus memperlakukan sebagai mesin yang berasal dengan langkah-langkah di atas.
~/.ssh/authorized_keys
bawah akun yang akan menerima koneksi. Anda dapat menempatkan kunci lain yang diizinkan untuk terhubung melalui akun ini di sini juga. Suatu hal yang sangat rumit jika Anda berada di vi dan menempelkan kunci ke file dari buffer paste di Putty adalah ini: kunci dimulai dengan "ssh-". Jika Anda tidak dalam mode sisipkan, huruf "s" pertama akan memasukkan vi dalam mode sisipkan dan sisa tombol akan terlihat baik-baik saja. Tetapi Anda akan kehilangan huruf "s" di awal kunci. Butuh berhari-hari bagi saya untuk menemukannya.chmod 600 ~/.ssh/authorized_keys
. Setidaknya harus gw.Seperti yang orang lain katakan, pengguna Anda harus membuat sendiri kunci pada mesin klien mereka dengan ssh-keygen dan menambahkan kunci publik mereka ke ~ / .ssh / otor_keys pada mesin yang ingin mereka masuki.
Untuk informasi lebih rinci, saya sangat merekomendasikan SSH, The Secure Shell .
Ada saran bagus di sini, jadi saya tidak akan mengulanginya. Setelah Anda menyiapkan satu server untuk memungkinkan Anda masuk dengan kunci, Anda dapat mengatur yang lain untuk melakukan hal yang sama dengan liner satu ini:
remote=server1 server2 server3 server4
for r in $remote; do echo connecting to $r; tar czf - ./.ssh/id*.pub ./.ssh/authorized_keys2 ./.ssh/config | ssh $r "tar zxf -; chmod 700 .ssh" ; done
Cukup cd ke direktori home Anda, tentukan remote variabel sebagai satu atau banyak nama server dan lakukan banyak sekaligus. Kata sandi yang diminta akan menjadi kata sandi ssh Anda untuk server jarak jauh. Tentu saja Anda dapat menggunakan versi yang disederhanakan tanpa for-loop:
tar czf - ./.ssh/id*.pub ./.ssh/authorized_keys2 ./.ssh/config | ssh YOUR_SERVER_NAME_HERE "tar ztvf -; chmod 700 .ssh"
INGAT: Hanya salin kunci publik Anda. Anda tidak ingin kunci pribadi Anda berada di beberapa server tempat siapa pun yang menggunakan sudo dapat menyalinnya dan dengan kasar memaksa frasa sandi Anda.