Bagaimana cara saya mengatur SSH sehingga saya tidak perlu mengetikkan kata sandi saat menghubungkan ke host?
~/.ssh/config
yang sekarang diperlukan PubkeyAcceptedKeyTypes ssh-rsa*,ssh-dss*
Bagaimana cara saya mengatur SSH sehingga saya tidak perlu mengetikkan kata sandi saat menghubungkan ke host?
~/.ssh/config
yang sekarang diperlukan PubkeyAcceptedKeyTypes ssh-rsa*,ssh-dss*
Jawaban:
Jika Anda kebetulan menggunakan GNOME, aplikasi kuda laut ("Kata Sandi dan Kunci Enkripsi") dapat melakukannya untuk Anda: File -> Baru -> Kunci Shell Aman .
Jika Anda lebih suka terminal, jalankan untuk menghasilkan keypair. Jenis keypair yang valid adalah:ssh-keygen -t <type>
Program akan meminta Anda untuk frasa sandi dan lokasi tempat menyimpan kunci baru. Disarankan menggunakan jalur default yang disarankan karena semua alat lain akan mencarinya di sana.
Sekali lagi, kuda laut sering dapat melakukannya untuk Anda - di My Personal Keys , klik kanan pada kunci SSH Anda dan pilih Configure key for secure shell .
Atau, ssh-copy-id -i ~/.ssh/id_rsa.pub remote-user@remote-host
di terminal.
Atau, sepenuhnya langkah-demi-langkah secara manual:
.ssh
di direktori home dari pengguna jarak jauh pada host jarak jauh.authorized_keys
(jika belum ada).umask
lebih liberal dari biasanya, membuat file tidak kelompok-ditulis: chmod go-w ~/.ssh ~/.ssh/authorized_keys
.~/.ssh/id_rsa.pub
) ke ~/.ssh/authorized_keys
file jarak jauh .Jika Anda memasukkan kunci pribadi Anda ke agen ssh , itu akan menyimpan kunci yang didekripsi dalam memori. Kami ingin ini menghindari memasukkan kembali kata sandi setiap kali kami masuk ke server.
Pertama, agen harus dimulai atau jalur soket komunikasi yang diluncurkan dimasukkan ke dalam variabel. Menjalankan ssh-agent pada terminal akan menghasilkan perintah untuk menetapkan dan mengatur variabel agen. Perintah-perintah ini dapat disimpan dalam file untuk digunakan di terminal yang berbeda. Atau, seseorang dapat menjalankan perintah-perintah ini dan lupa menggunakan kembali agen yang sama di terminal lain. misalnya: eval $(ssh-agent)
.
Memuat kuncinya adalah masalah sederhana mengeksekusi ssh-add
dan memberikannya frasa sandi.
Jika Anda menggunakan GNOME, gnome-keyring-daemon biasanya menyediakan fungsionalitas SSH agent yang sama dengan ssh-agent, jadi Anda tidak perlu memulai apa pun. GNOME akan secara otomatis memuat dan membuka kunci kunci saat login juga.
Jika semuanya dilakukan dengan benar, menggunakan tidak akan meminta Anda untuk kata sandi. Jika ada sesuatu yang salah dengan agen dan bukan kunci, Anda akan diminta untuk mengetikkan frasa sandi untuk kunci tersebut, dan bukan kata sandi untuk akun pengguna.ssh user@server
Apa pun yang menggunakan ssh untuk komunikasi akan berfungsi tanpa memasukkan kata sandi akun pengguna ketika kunci yang benar dimuat dalam agen. Program seperti scp , sftp dan rsync memanfaatkan ini.
id_dsa
alih-alih id_rsa
, dan ECDSA akan memilikinya id_ecdsa
.authorized_keys2
- tetapi sangat tidak mungkin Anda akan menemukan sesuatu yang lebih tua dari 5.0 digunakan.lsh
,, ssh.com
dan server SSH (Unix dan bukan) lainnya tidak termasuk dalam tutorial ini.Menyalin kunci publik ke host jarak jauh:
ssh-copy-id -i ~ / .ssh / id_rsa.pub myaccount @ remotehost # this cat ~ / .ssh / id_rsa.pub | ssh myaccount @ remotehost \ 'mkdir -p ~ / .ssh; cat >> ~ / .ssh / otor_keys '# atau ini
ssh-agent> ~ / .ssh / cross-terminal-agent . ~ / .ssh / cross-terminal-agent
ssh-copy-id
yang menyalin kunci publik ke host target dan menetapkan izin secara otomatis.
ssh-keygen -f ~/.ssh/id_rsa -N "";ssh-copy-id -i ~/.ssh/id_rsa username@server-ip-or-address
(ganti saja username@server-ip-or-address
).
Anda tidak menentukan Unix yang Anda gunakan, apa yang Anda hubungi Unix, shell apa yang Anda gunakan, varian SSH apa yang Anda gunakan, dll. Jadi beberapa dari ini mungkin perlu sedikit disesuaikan; ini didasarkan pada versi OpenSSH yang cukup baru, yang digunakan pada banyak varian unix.
Ini semua dari sistem desktop lokal Anda.
ssh-keygen
Pastikan untuk menggunakan default untuk nama kunci. Saya sarankan Anda lakukan menetapkan passphrase pada tombol itu, jika tidak itu masalah keamanan. "-t rsa" bukan ide yang buruk, tapi mungkin tidak diperlukan.
ssh-copy-id username@server
Itu akan menanyakan kata sandi yang akan Anda gunakan untuk masuk, dan mengatur hal-hal yang berwenang untuk Anda. (tidak perlu melakukannya dengan tangan)
Lalu ini:
`ssh-agent`
atau mungkin ini:
exec ssh-agent sh
atau:
exec ssh-agent bash
Itu akan memulai agen SSH yang dapat menahan kunci Anda. Pada banyak varian Unix modern, jika Anda masuk secara grafis, ini sudah terjadi. Varian pertama (dengan backticks) menempatkan ssh-agent di latar belakang dan mengatur variabel lingkungan untuk berbicara dengannya. Dua yang kedua meminta agen menjalankan shell untuk Anda, sehingga ketika Anda keluar dari shell, agen keluar.
Banyak varian Unix modern sudah memiliki agen berjalan untuk Anda, terutama jika Anda login secara grafis. Anda dapat mencoba " ps aux | grep ssh-agent
" atau " ps -ef | grep ssh-agent
"; jika sesuatu sudah berjalan, gunakan itu.
Lalu, akhirnya:
ssh-add
Itu akan meminta kata sandi; berikan yang Anda berikan ssh-keygen. Ada juga cara untuk membuatnya bertanya secara grafis. Dan Anda dapat memasukkan ssh-agent dan ssh-add barang ke dalam skrip login Anda (setup berbeda tergantung pada shell yang Anda gunakan) untuk mengotomatisasi ini, tetapi beberapa varian Unix (Linux Ubuntu saat ini, misalnya) melakukan sebagian besar dari itu secara otomatis, jadi yang perlu Anda lakukan hanyalah membuat kunci dan menggunakan ssh-copy-id untuk memasangnya di host jarak jauh.
Sekarang, " ssh username@server
" seharusnya berfungsi tanpa meminta otentikasi. Di belakang layar, itu menggunakan kunci yang memegang ssh-agent, dan meminta agen untuk melakukan trik penandatanganan sihir untuk itu.
Dimungkinkan untuk melakukan ini di Putty pada Windows juga.
Setelah Anda memasangkan kunci publik / pribadi semua (seperti jawaban lain di sini menunjukkan) jalankan PuttyGen. Di sana, muat kunci pribadi yang sudah Anda siapkan, dan kemudian simpan sebagai kunci pribadi Putty (ppk).
Kemudian di Putty, cukup klik pada sesi tersimpan yang Anda ingin masuk otomatis dan klik Muat. Dari sini, masuk ke Connection -> Data di panel kiri, dan ketik "Nama pengguna login otomatis" pada nama pengguna untuk server jauh itu:
Setelah itu masuk ke Connection -> SSH -> Auth, dan telusuri ppk yang Anda buat di PuttyGen:
Kemudian kembali ke halaman sesi dan simpan sesi yang Anda muat sebelumnya.
Dari pertanyaan yang sangat mirip pada ServerFault , saya sarankan menggunakan ssh-copy-id , yang melakukan semua langkah yang terkait dengan pengaturan kunci otentikasi untuk Anda:
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.
Yang perlu Anda lakukan hanyalah ini:
ssh-copy-id user@host
Ketikkan kata sandi Anda sekali, dan Anda siap melakukannya!
Terlepas dari semua yang telah diberitahukan tentang cara mengatur kunci ssh, saya merekomendasikan Keychain sebagai antarmuka konsol ssh-agent yang memungkinkan Anda untuk menangani satu per proses sistem saja, bukan per login.
Saya tahu sudah ada alat GNOME dan KDE yang melakukan hal yang sama tetapi jika Anda adalah tipe pecandu konsol ini hebat (dan dapat digunakan pada sebagian besar sistem Unix).
Untuk menggunakannya, cukup tambahkan berikut ini ke Anda ~/.bashrc
(mirip untuk shell lainnya):
if type keychain >/dev/null 2>/dev/null; then
keychain --nogui -q <all your SSH/PGP keys>
[ -f ~/.keychain/${HOSTNAME}-sh ] && . ~/.keychain/${HOSTNAME}-sh
[ -f ~/.keychain/${HOSTNAME}-sh-gpg ] && . ~/.keychain/${HOSTNAME}-sh-gpg
fi
http://linuxproblem.org/art_9.html
Tujuan Anda
Anda ingin menggunakan Linux dan OpenSSH untuk mengotomatiskan tugas Anda. Karena itu Anda memerlukan login otomatis dari host A / pengguna a ke Host B / pengguna b. Anda tidak ingin memasukkan kata sandi apa pun, karena Anda ingin memanggil ssh dari dalam skrip shell.
Saya menulis tutorial yang sangat singkat ini setelah merasa BENAR-BENAR frustrasi dengan tutorial yang BENAR-BENAR panjang karena sebenarnya sangat sederhana :)
test -f ~/.ssh/id_rsa.pub || ssh-keygen -t rsa #press enter twice if given prompts, then "ssh-add"
scp ~/.ssh/id_rsa.pub destID@destMachine:/tmp/ #type password
ssh destID@destMachine #type password
cat /tmp/id_rsa.pub >> ~/.ssh/authorized_keys
rm /tmp/id_rsa.pub
ssh-keygen
. (Jika memberitahu Anda bahwa Anda harus menentukan jenis, lakukan ssh-keygen -t rsa
.) Ketika meminta Anda untuk lokasi file, ambil yang default. Ketika meminta Anda untuk passphrase, tekan enter tanpa frasa sandi.cat ~/.ssh/id_rsa.pub
(atau apa pun lokasi default file di ssh-keygen
adalah, meskipun Anda harus memiliki benar-benar tua ssh
install untuk itu menjadi berbeda); salin output ke clipboard Anda.~/.ssh/authorized_keys
(jika ~/.ssh
tidak ada, slogin
ke suatu tempat; ini adalah cara sederhana dan mudah untuk membuatnya dibuat dengan izin yang tepat). Tempel papan klip Anda (berisi id_rsa.pub
dari host lain) ke dalam file ini.Jika Anda ingin melakukan semuanya di terminal di Linux:
Di tuan rumah
cd ~ / .ssh /
ssh-keygen -t {rsa | dsa} -b {1024 | 2048 | 4096} -C "beberapa teks komentar jika Anda ingin" -f id_ArbitraryName
Item dalam {} adalah opsi, gunakan rsa atau dsa dan pilih ukuran bit (lebih besar lebih aman)
Maka Anda perlu menambahkan izin ke file Authorized_keys dan Authorized_keys2.
cat id_ArbitraryName.pub >> otor_keys
cat id_AribtraryName.pub >> otor_keys2
Kemudian unduh file id_AribtraryName ke kotak yang ingin Anda ssh. Jika kotak penghubung berbasis unix, file konfigurasi mungkin diperlukan (dalam dempul, seseorang di atas membahasnya).
Di Kotak Menghubungkan
Di file konfigurasi Anda - vim ~ / .ssh / config
Host example.host.com # atau nama komputer Anda
Nama pengguna pengguna
IdentityFile ~ / .ssh / id_ArbitraryName
File config membutuhkan izin 600. Folder SSh membutuhkan 700.
Semoga itu bisa membantu jika Anda mengalami masalah konfigurasi yang banyak dihilangkan.