Saya ingin dapat masuk ke remote melalui ssh tanpa harus memasukkan kata sandi setiap saat.
- Bagaimana cara mengaturnya?
- Apakah perintah berbeda diperlukan untuk menjalankan sesi tanpa kata sandi?
Saya ingin dapat masuk ke remote melalui ssh tanpa harus memasukkan kata sandi setiap saat.
Jawaban:
Jalankan perintah ini:
ssh-keygen
Maka Anda harus menyalin kunci baru ke server Anda :
ssh-copy-id user@host
## or if your server uses custom port no:
ssh-copy-id "user@host -p 1234"
Setelah kunci disalin, ssh ke mesin seperti biasa:
ssh user@host
Anda sekarang dapat masuk tanpa memasukkan kata sandi dari mesin tertentu tempat Anda menjalankan perintah.
not-marco@rinzwind-desktop:~$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/not-marco/.ssh/id_rsa):
Created directory '/home/not-marco/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/not-marco/.ssh/id_rsa.
Your public key has been saved in /home/not-marco/.ssh/id_rsa.pub.
The key fingerprint is:
b1:25:04:21:1a:38:73:38:3c:e9:e4:5b:81:e9:ac:0f not-marco@rinzwind-desktop
The key's randomart image is:
+--[ RSA 2048]----+
|.o= . oo. |
|*B.+ . . |
|*=o . o . |
| = . = |
|. o S |
|E. |
| o |
| . |
| |
+-----------------+
not-marco@rinzwind-desktop:~$ ssh-copy-id not-marco@server
not-marco@server's password:
Now try logging into the machine, with "ssh 'not-marco@server'", and check in:
~/.ssh/authorized_keys
to make sure we haven't added extra keys that you weren't expecting.
Ini mengasumsikan Anda sudah berhasil terhubung ke server Anda melalui SSH.
Anda harus membuat SSH Keypair yang memungkinkan Anda mengidentifikasi Anda sendiri tanpa menggunakan kata sandi. Anda dapat memilih untuk melindungi kunci dengan kode sandi jika diinginkan, tetapi ini dapat dibiarkan kosong sehingga memungkinkan akses SSH yang benar-benar tanpa kata sandi.
ssh-keygenini akan membuat id_rsadan id_rsa.pubfile. The pubfile apa yang terjadi di server, kunci pribadi ( id_rsa) adalah apa yang tetap dengan Anda dan bagaimana Anda mengidentifikasi diri.ssh-copy-id user@servermengganti pengguna dengan pengguna jarak jauh Anda dan server dengan nama DNS mesin atau alamat IP. Ini akan meminta kata sandi SSH Anda, masukkan dan jika semua selesai dengan sukses Anda akan dapat mengakses mesin melalui ssh user@servertanpa perlu kata sandi.ssh-keygenikuti petunjuk di layar, lalu ketik ssh-copy-id user@servermengganti pengguna dengan pengguna jarak jauh dan server dengan mesin jarak jauh
ssh-copy-id "not-marco@127.0.0.1 -p 1234".
Cara saya biasanya melakukan ini adalah sebagai berikut:
ssh-keygen -t rsa
(Saat diminta kata sandi, biarkan kosong)
Kemudian:
cat ~/.ssh/id_rsa.pub | ssh username@hostname 'cat >> .ssh/authorized_keys'
(Ini membutuhkan folder .ssh berada di direktori home pada hostname yang ditargetkan, dengan file Authorized_key di dalamnya)
Tentu saja, ganti nama pengguna dengan nama pengguna yang diinginkan, dan nama host dengan nama host atau alamat IP yang diinginkan
Setelah itu, hanya SSH ke kotak itu seperti yang biasa Anda lakukan.
touchdan chmodperintah dalam jawaban Rinzwind?
.ssh/authorized_keysfile ke 0600 atau ini tidak akan berhasil
Biasanya saya gunakan sshpassuntuk itu, instal dengan sudo apt-get install sshpassdan gunakan seperti ini
sshpass -p 'password' ssh your_username@your_server
sshpassmerupakan peretasan yang sangat berguna jika Anda tidak dapat mengubah metode otentikasi pada server jarak jauh!
Nonaktifkan Otentikasi Kata Sandi
Karena banyak orang dengan server SSH menggunakan kata sandi yang lemah, banyak penyerang online akan mencari server SSH, kemudian mulai menebak kata sandi secara acak. Seorang penyerang dapat mencoba ribuan kata sandi dalam satu jam, dan menebak kata sandi terkuat yang diberikan waktu yang cukup. Solusi yang disarankan adalah menggunakan kunci SSH alih-alih kata sandi. Agar sulit ditebak seperti kunci SSH normal, kata sandi harus berisi 634 huruf dan angka acak. Jika Anda selalu dapat masuk ke komputer dengan kunci SSH, Anda harus menonaktifkan otentikasi kata sandi sama sekali.
Jika Anda menonaktifkan otentikasi kata sandi, Anda hanya dapat terhubung dari komputer yang telah Anda setujui secara khusus. Ini secara besar-besaran meningkatkan keamanan Anda, tetapi membuatnya tidak mungkin bagi Anda untuk terhubung ke komputer Anda sendiri dari PC teman tanpa terlebih dahulu menyetujui PC, atau dari laptop Anda sendiri ketika Anda secara tidak sengaja menghapus kunci Anda.
Disarankan untuk menonaktifkan otentikasi kata sandi kecuali Anda memiliki alasan khusus untuk tidak melakukannya.
Untuk menonaktifkan otentikasi kata sandi, cari baris berikut di file sshd_config Anda:
#PasswordAuthentication yesganti dengan garis yang terlihat seperti ini:
PasswordAuthentication noSetelah Anda menyimpan file dan me-restart server SSH Anda, Anda bahkan tidak akan diminta kata sandi ketika Anda login.
https://help.ubuntu.com/community/SSH/OpenSSH/Configuring#disable-password-authentication
PasswordAuthentication nomemengaruhi semua pengguna? Jika tidak, bagaimana cara mematikannya untuk pengguna normal tetapi membiarkannya tidak berubah untuk root saat saya mengujinya? Saya tidak benar-benar ingin membuatnya dan mengunci diri sepenuhnya.
Permission denied (publickey).dengan PasswordAuthentication no. Apa yang harus saya lakukan? Apakah saya mengganti PasswordAuthentication nohost lain?
Solusi ini khusus untuk pengguna yang menggunakan Windows untuk ssh ke mesin jarak jauh mereka termasuk gambar cloud di AWS Cloud dan GCE Cloud
Baru-baru ini menggunakan solusi ini untuk login jarak jauh gambar vm baru yang digunakan di GCE.
puttygen unduhan puttygenwinscp download wincpJika Anda memiliki kunci pribadi:
Buka puttygen, tekan tombol muat dan pilih *.pemfile kunci pribadi Anda ( ).
Jika Anda tidak memiliki kunci pribadi:
puttygen,(dari sumber 1, tautan diberikan di bawah ini)
notepad)Salin data kunci publik Anda dari bagian "Kunci publik untuk menempel ke file OpenSSH official_keys" dari Generator Kunci Putty, dan tempelkan data kunci ke authorized_keysfile.
Pastikan hanya ada satu baris teks dalam file ini.
Unggah file berwenang_keys ke direktori home di mesin jarak jauh.
Buat .sshdirektori (jika tidak ada)
Salin authorized_keysfile ke .sshdirektori.
(ini akan menggantikan authorized_keysfile yang ada , perhatikan ini).
Jika file ada, cukup tambahkan konten file ini ke file yang ada.
Jalankan perintah untuk mengatur izin:
sudo chmod 700 .ssh && chmod 600 .ssh/authorized_keys
Sekarang Anda akan dapat sshmasuk ke mesin jarak jauh tanpa memasukkan kredensial setiap waktu.
Jika Anda membuat kunci publik / pricate dan masuk menggunakan kunci publik kami yang baru dibuat, Anda tidak perlu mengetikkan kata sandi Anda. Bergantung pada konfigurasi key-ring dan / atau ssh agent Anda, Anda mungkin perlu melindungi kunci Anda dengan frasa sandi.
Berikut adalah salah satu dari banyak howto singkat untuk Anda. Sangat penting untuk keselamatan metode ini, bahwa kunci pribadi yang dihasilkan tetap pribadi! Anda tidak boleh membaginya dengan siapa pun atau mengizinkan akses itu dalam kapasitas apa pun.
Perintah ini menghasilkan kunci yang cukup kuat di ~/.ssh/:
ssh-keygen -b 4096
Di dalam ~/.ssh/Anda akan menemukan kunci publik Anda sebagai id_rsa.pub. Isinya harus ditambahkan ke authorized_keysfile server Anda dengan mengangkut melalui media yang dapat diangkut (pen drive) atau dengan segera mengaktifkan otentikasi kata sandi di server, kemudian menggunakan ssh-copy-id ~/.ssh/id_rsa.pub username@serverdan kemudian menonaktifkannya lagi.
Jika Anda memilih untuk mengamankan kunci Anda dengan frasa sandi (pada langkah pertama), Anda dapat menggunakan ssh-agentatau kunci Ubuntu untuk mengamankan yang kasar secara lokal sehingga Anda tidak harus mengetikkannya setiap saat.
Untuk membuat beberapa tambahan:
Mac secara default tidak memiliki ssh-copy-id, Anda harus menginstalnya sendiri:
curl https://raw.github.com/beautifulcode/ssh-copy-id-for-OSX/master/ssh-copy-id.sh -o /usr/local/bin/ssh-copy-id
chmod +x /usr/local/bin/ssh-copy-id
temukan lebih lanjut di sini: https://github.com/beautifulcode/ssh-copy-id-for-OSX
jika Anda telah membuat port-forwarding, perintahnya harus seperti ini:
ssh-copy-id "not-marco@127.0.0.1 -p 2222"
perhatikan bahwa tanda kutip diperlukan.
Aplikasi sshdan scpuntuk login jarak jauh dan salinan jarak jauh, masing-masing, memungkinkan Anda untuk berkomunikasi dengan host jarak jauh tanpa memberikan kata sandi. Ini mengharuskan Anda mengikuti prosedur otentikasi seperti yang dijelaskan di bawah ini. Yang kami maksud dengan klien adalah mesin yang Anda duduki dan server yang kami maksud adalah mesin yang ingin Anda masuki tanpa memberikan kata sandi. Langkah-langkah prosedur otentikasi adalah:
$HOME/.ssh.$HOME/.ssh/authorized_keysatau $HOME/.ssh/authorized_keys2di server.Ada tiga jenis protokol otentikasi. Anda menentukan jenisnya ketika menjalankan ssh-keygen:
chmod 0700memastikan bahwa file ini tidak dapat dibaca oleh orang lain) dan identity.pub (kunci publik).ssh-keygen -t rsadan menghasilkan file id_rsa(kunci pribadi) dan id_rsa.pub(kunci publik)ssh-keygen -t dsadan menghasilkan file id_dsa(kunci pribadi) dan id_dsa.pub(kunci publik)Saat menjalankan ssh-keygen Anda dapat mengandalkan jawaban default (menyiratkan bahwa Anda tidak memberikan frasa sandi). Ini membuat seluruh pengaturan sederhana, tetapi juga tidak aman.
Anda dapat menentukan jenis kunci yang akan digunakan oleh opsi untuk ssh ; ssh -1memaksa penggunaan kunci RSA1 (protokol versi 1), sedangkan ssh -2memaksa ssh untuk mencoba kunci RSA atau DSA saja (protokol versi 2). Dalam contoh di bawah ini, kami membuat dan menginstal kunci RSA1 dan DSA pada host jarak jauh sehingga Anda memiliki lebih banyak fleksibilitas. Anda dapat membuat file konfigurasi di .sshdirektori Anda dengan baris tersebut
Protocol 1,2
Ini membuat ssh mencoba koneksi RSA1 (versi protokol 1) sebelum RSA / DSA (versi protokol 2).
remote=user@remotehost # fill in correct user and remotehost names
cd $HOME/.ssh
# create .ssh on remote host if it is non-existing:
ssh $remote 'if [ ! -d .ssh ]; then mkdir .ssh; fi'
# copy RSA1 key:
scp identity.pub ${remote}:.ssh
ssh $remote "cd .ssh; cat identity.pub >> authorized_keys"
remote=user@remotehost # fill in correct user and remotehost names
cd $HOME/.ssh
# create .ssh on remote host if it is non-existing:
ssh $remote 'if [ ! -d .ssh ]; then mkdir .ssh; fi'
# copy DSA key:
scp id_dsa.pub ${remote}:.ssh
ssh $remote "cd .ssh; cat id_dsa.pub >> authorized_keys2"
Ini semua yang harus Anda lakukan jika Anda tidak menggunakan kata sandi saat membuat kunci. Anda dapat menguji koneksi dengan menjalankan ssh $ remote dan melihat apakah Anda dapat masuk tanpa memberikan kata sandi (Anda mungkin perlu menggunakan -1atau -2sebagai opsi untuk ssh ). Prosedur ini, tentu saja, dapat diulang untuk mesin yang ingin Anda masuki.
Jika Anda memang menggunakan kata sandi, Anda harus menjalankan program ssh-agentuntuk memulai shell khusus, diikuti dengan ssh-addmendaftarkan kombinasi kunci / kata sandi Andasshd . Lihat halaman manual untuk program-program ini untuk informasi lebih lanjut.
ssh-no-password.sh#!/bin/sh
# create ssh connections without giving a password
if [ $# -lt 1 ]; then
echo Usage: $0 username@remotehost
exit
fi
remote="$1" # 1st command-line argument is the user@remotehost address
this=$HOST # name of client host
# first check if we need to run ssh-keygen for generating
# $HOME/.ssh with public and private keys:
if [ ! -d $HOME/.ssh ]; then
echo "just type RETURN for each question:" # no passphrase - unsecure!!
# generate RSA1, RSA and DSA keys:
echo; echo; echo
ssh-keygen
echo; echo; echo
ssh-keygen -t rsa
echo; echo; echo
ssh-keygen -t dsa
else
# we have $HOME/.ssh, but check that we have all types of
# keys (RSA1, RSA, DSA):
if [ ! -f $HOME/.ssh/identity ]; then
# generate RSA1 keys:
echo "just type RETURN for each question:" # no passphrase - unsecure!!
ssh-keygen
fi
if [ ! -f $HOME/.ssh/id_rsa ]; then
# generate RSA keys:
echo "just type RETURN for each question:" # no passphrase - unsecure!!
ssh-keygen -t rsa
fi
if [ ! -f $HOME/.ssh/id_rsa ]; then
# generate DSA keys:
echo "just type RETURN for each question:" # no passphrase - unsecure!!
ssh-keygen -t dsa
fi
fi
cd $HOME/.ssh
if [ ! -f config ]; then
# make ssh try ssh -1 (RSA1 keys) first and then ssh -2 (DSA keys)
echo "Protocol 1,2" > config
fi
# copy public keys (all three types) to the destination host:
echo; echo; echo
# create .ssh on remote host if it's not there:
ssh $remote 'if [ ! -d .ssh ]; then mkdir .ssh; fi'
# copy RSA1 key:
scp identity.pub ${remote}:.ssh/${this}_rsa1.pub
# copy RSA key:
#scp id_rsa.pub ${remote}:.ssh/${this}_rsa.pub
# copy DSA key:
scp id_dsa.pub ${remote}:.ssh/${this}_dsa.pub
# make authorized_keys(2) files on remote host:
echo; echo; echo
# this one copies all three keys:
#ssh $remote "cd .ssh; touch authorized_keys authorized_keys2; cat ${this}_rsa1.pub >> authorized_keys; cat ${this}_rsa.pub >> authorized_keys2; cat ${this}_dsa.pub >> authorized_keys2;"
# this one copies RSA1 and DSA keys:
ssh $remote "cd .ssh; touch authorized_keys authorized_keys2; cat ${this}_rsa1.pub >> authorized_keys; cat ${this}_dsa.pub >> authorized_keys2;"
echo; echo; echo
echo "try an ssh $remote"
disalin dari: http://folk.uio.no/hpl/scripting/doc/ssh-no-password.html
Saya ingin menambahkan jawaban bagi mereka yang mungkin menemukan mereka harus memasukkan kata sandi bahkan mereka telah membaca semua jawaban di sini karena Anda telah menetapkan IdentitiesOnly sebagai ya. Dan jawabannya di sini dapat menghemat banyak waktu untuk mengelola beberapa kunci, menjadi kunci untuk git atau server.
Setelah saya membuat kunci dan menyalinnya ke server:
ssh-keygen # change the file to /home/yourname/.ssh/something
ssh-copy-id -i ~/.ssh/something.pub lerner@192.168.20.160
Saya menemukan itu tidak berhasil.
Lalu saya pergi untuk memeriksa ~/.ssh/configfile pada klien, saya melihat ini di bagian bawah:
Host *
IdentitiesOnly yes
Lalu saya tambahkan ini di atas:
Host somename
HostName 192.168.20.160
User lerner
IdentityFile ~/.ssh/something
Saya bisa masuk dengan memasukkan ssh somename.
Kemudian Anda dapat menambahkan beberapa kunci ssh menggunakan nama favorit Anda, dan Anda hanya perlu menambahkan pengaturan seperti empat baris di atas ke file konfigurasi.
Host adalah nama yang ingin Anda masukkan ketika Anda menghubungkan server nanti; HostName adalah ip server; Pengguna adalah nama pengguna yang Anda login di server; dan file identitas adalah file tempat Anda menyimpan kunci yang Anda buat.