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-keygen
ini akan membuat id_rsa
dan id_rsa.pub
file. The pub
file apa yang terjadi di server, kunci pribadi ( id_rsa
) adalah apa yang tetap dengan Anda dan bagaimana Anda mengidentifikasi diri.ssh-copy-id user@server
mengganti 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@server
tanpa perlu kata sandi.ssh-keygen
ikuti petunjuk di layar, lalu ketik ssh-copy-id user@server
mengganti 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.
touch
dan chmod
perintah dalam jawaban Rinzwind?
.ssh/authorized_keys
file ke 0600 atau ini tidak akan berhasil
Biasanya saya gunakan sshpass
untuk itu, instal dengan sudo apt-get install sshpass
dan gunakan seperti ini
sshpass -p 'password' ssh your_username@your_server
sshpass
merupakan 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 yes
ganti dengan garis yang terlihat seperti ini:
PasswordAuthentication no
Setelah 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 no
memengaruhi 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 no
host 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 *.pem
file 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_keys
file.
Pastikan hanya ada satu baris teks dalam file ini.
Unggah file berwenang_keys ke direktori home di mesin jarak jauh.
Buat .ssh
direktori (jika tidak ada)
Salin authorized_keys
file ke .ssh
direktori.
(ini akan menggantikan authorized_keys
file 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 ssh
masuk 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_keys
file 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@server
dan kemudian menonaktifkannya lagi.
Jika Anda memilih untuk mengamankan kunci Anda dengan frasa sandi (pada langkah pertama), Anda dapat menggunakan ssh-agent
atau 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 ssh
dan scp
untuk 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_keys
atau $HOME/.ssh/authorized_keys2
di server.Ada tiga jenis protokol otentikasi. Anda menentukan jenisnya ketika menjalankan ssh-keygen:
chmod 0700
memastikan bahwa file ini tidak dapat dibaca oleh orang lain) dan identity.pub (kunci publik).ssh-keygen -t rsa
dan menghasilkan file id_rsa
(kunci pribadi) dan id_rsa.pub
(kunci publik)ssh-keygen -t dsa
dan 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 -1
memaksa penggunaan kunci RSA1 (protokol versi 1), sedangkan ssh -2
memaksa 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 .ssh
direktori 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 -1
atau -2
sebagai 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-agent
untuk memulai shell khusus, diikuti dengan ssh-add
mendaftarkan 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/config
file 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.