it-swarm.asia

Bagaimana saya mengatur SSH sehingga saya tidak perlu mengetikkan kata sandi saya?

Bagaimana cara saya mengatur SSH sehingga saya tidak perlu mengetikkan kata sandi saat menghubungkan ke host?

147
Richard Hoskins

Buat kunci SSH (jika Anda tidak memilikinya)

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 ssh-keygen -t <type> untuk menghasilkan keypair. Jenis keypair yang valid adalah:

  • rsa: default
  • dsa: lebih atau kurang setara, kecuali terbatas pada kunci 1024 bit
  • ecdsa: keamanan yang sama dengan kunci yang lebih kecil, tetapi relatif baru dan agak jarang pada perangkat lunak SSH.
  • ed25519: Keamanan tinggi (lebih tahan terhadap serangan saluran samping dan generator bilangan acak yang lemah). Generasi tanda tangan yang sangat cepat. Sangat baru. Hanya tersedia di OpenSSH> = 6.5 .

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.

Unggah kunci publik ke server jarak jauh

Sekali lagi, kuda laut sering dapat melakukannya untuk Anda - di Kunci Pribadi Saya , klik kanan pada kunci SSH Anda dan pilih Kunci konfigurasi untuk Shell aman .

Atau, ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected] di terminal.

Atau, selangkah demi selangkah secara manual:

  1. Buat direktori (jika belum ada) bernama .ssh di direktori home dari pengguna jarak jauh pada Host jarak jauh.
  2. Di direktori itu, buat file bernama authorized_keys (jika belum ada).
  3. Jika umask jarak jauh Anda lebih liberal dari biasanya, jadikan file tidak dapat ditulis grup: chmod go-w ~/.ssh ~/.ssh/authorized_keys.
  4. Akhirnya, entah bagaimana menyalin (menambahkan) konten kunci publik lokal Anda (~/.ssh/id_rsa.pub) ke file ~/.ssh/authorized_keys jarak jauh.

Masukkan kunci ke agen ssh

Jika Anda memuat kunci pribadi Anda ke agen ssh , itu akan menyimpan kunci yang didekripsi di dalam memori. Kami ingin ini menghindari memasukkan kembali kata sandi setiap kali kami Shell 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 ini dan lupa menggunakan kembali agen yang sama di terminal lain. mis .: eval $(ssh-agent).

Memuat kunci adalah masalah sederhana mengeksekusi ssh-add dan memberinya frasa sandi.

Jika Anda menggunakan GNOME, gnome-keyring-daemon biasanya menyediakan fungsionalitas agen SSH yang sama dengan ssh-agent, jadi Anda tidak perlu memulai apa pun. GNOME akan secara otomatis memuat dan membuka kunci kunci saat login juga.

Masuk ke server jauh tanpa kata sandi

Jika semuanya dilakukan dengan benar, menggunakan ssh [email protected] 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.

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.


Catatan:

  • Anda hanya perlu kunci SSHv2, karena SSHv1 sangat tidak aman dan sekarang tidak digunakan.
  • Anda juga hanya perlu satu jenis kunci - RSA atau DSA sudah cukup. (ed25519 dan ECDSA keduanya baru-baru ini dan karenanya tidak didukung di mana-mana).
  • Semua langkah ini sama untuk kunci RSA dan DSA. Jika Anda menggunakan DSA, gunakan id_dsa alih-alih id_rsa, dan ECDSA akan memiliki id_ecdsa.
  • Server OpenSSH yang lebih tua dari 3.0 menggunakan authorized_keys2 - tetapi sangat tidak mungkin Anda akan menemukan sesuatu yang lebih tua dari 5.0 digunakan.
  • Instruksi ini hanya berlaku untuk OpenSSH versi 3.0 dan yang lebih baru. lsh, ssh.com, dan server SSH lainnya (Unix dan bukan) tidak termasuk dalam tutorial ini.

Contoh:

  • Menyalin kunci publik ke Host remote:

     ssh-copy-id -i ~/.ssh/id_rsa.pub myaccount @ remotehost # this 
     
     cat ~/.ssh/id_rsa.pub | ssh myaccount @ remotehost\
     'mkdir -p ~/.ssh; cat >> ~/.ssh/official_keys '# atau ini 
    
  • Menyimpan variabel agen untuk digunakan kembali (contoh rumit)
     ssh-agent> ~/.ssh/cross-terminal-agent 
    . ~/.ssh/cross-terminal-agent 
    
160
grawity

Anda tidak menentukan Unix apa yang Anda gunakan, apa Unix Anda terhubung, apa Shell Anda gunakan, apa varian SSH 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 menyarankan agar Anda melakukan menetapkan frasa sandi pada kunci itu, jika tidak maka ini merupakan masalah keamanan. "-t rsa" bukan ide yang buruk, tapi mungkin tidak diperlukan.

ssh-copy-id [email protected]

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 saat 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 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, yang perlu Anda lakukan hanyalah membuat kunci dan menggunakan ssh-copy-id untuk memasangnya di Host jarak jauh.

Sekarang, "ssh [email protected]" harus berfungsi tanpa meminta otentikasi apa pun. Di belakang layar, itu menggunakan kunci yang memegang ssh-agent, dan meminta agen untuk melakukan trik penandatanganan sihir untuk itu.

22
freiheit

Dimungkinkan untuk melakukan ini di Putty pada Windows juga.

Setelah Anda memasangkan pasangan kunci publik/pribadi (seperti yang ditunjukkan oleh jawaban lain di sini) jalankan PuttyGen. Di sana, muat kunci privat yang sudah Anda siapkan, dan kemudian simpan sebagai kunci privat 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:

PuTTY username entry

Setelah itu masuk ke Connection -> SSH -> Auth, dan telusuri ppk yang Anda buat di PuttyGen:

PuTTY private key entry

Kemudian kembali ke halaman sesi dan simpan sesi yang Anda muat sebelumnya.

Dari pertanyaan yang sangat mirip pada ServerFault , saya akan merekomendasikan menggunakan ssh-copy-id , yang melakukan semua langkah yang terlibat dengan pengaturan kunci otentikasi untuk Anda:

ssh-copy-id adalah skrip yang menggunakan ssh untuk masuk ke mesin jarak jauh (mungkin menggunakan kata sandi masuk, 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 memiliki StrictModes diatur 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 [email protected]

Ketikkan kata sandi Anda sekali, dan Anda siap melakukannya!

3
Chris Bunch

Terlepas dari semua yang telah diberitahukan tentang cara mengatur kunci ssh, saya merekomendasikan Keychain sebagai ssh-agent konsol frontend 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 sangat bagus (dan dapat digunakan pada sebagian besar sistem Unix).

Untuk menggunakannya, cukup tambahkan yang berikut ini ke ~/.bashrc Anda (mirip dengan 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
3
scetoaux

Putty memiliki opsi -pw yang memungkinkan Anda membuat pintasan di desktop seperti ini:

"C:\Program Files\PuTTY\putty.exe" -ssh [email protected] -pw your_password
2
Genc Hosting

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 [email protected]:/tmp/ #type password

ssh [email protected] #type password

cat /tmp/id_rsa.pub >> ~/.ssh/authorized_keys

rm /tmp/id_rsa.pub
2
samthebest

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.

2
TheTXI
  1. Pada Host yang terhubung, jalankan ssh-keygen. (Jika itu memberi tahu 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.
  2. cat ~/.ssh/id_rsa.pub (atau apa pun lokasi file default di ssh-keygen adalah, meskipun Anda harus memiliki benar-benar instal ssh lama agar berbeda); salin output ke clipboard Anda.
  3. Masuk secara normal ke Host tujuan sebagai akun yang ingin Anda sambungkan. Edit file ~/.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 clipboard Anda (berisi id_rsa.pub dari Host lain) ke dalam file ini.
1
chaos

Jika Anda ingin melakukan semuanya di terminal di Linux:

Di Host

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 Putty, seseorang di atas membahasnya).

Pada Kotak Penghubung

Dalam file konfigurasi Anda - vim ~/.ssh/config

Contoh host.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.

0
nerdwaller