Pertanyaan Bagaimana cara mengotomatisasi login SSH dengan kata sandi?


Bagaimana cara mengotomatisasi login SSH dengan kata sandi? Saya sedang mengkonfigurasi VM pengujian saya, sehingga keamanan yang sangat ketat tidak dipertimbangkan. SSH dipilih untuk keamanan yang dapat diterima dengan konfigurasi minimal.

ex)

echo password | ssh id@server

Ini tidak berhasil.

Saya ingat saya melakukan ini dengan beberapa trik seseorang menuntun saya, tetapi saya tidak ingat sekarang trik yang saya gunakan ...


332
2018-03-01 11:07




FreeBSD tidak menerima kunci tanpa kata sandi. Jangan tergoda. Namun beberapa server Linux menerimanya. Saya yakin server Linux salah konfigurasi. - Eonil
Ini pertanyaan yang valid. Misalnya, saya ingin mengizinkan pengguna memasukkan kata sandi, lalu masuk ke komputer lain yang menggunakannya. Saya tidak dapat berasumsi bahwa akan ada kunci ssh yang didistribusikan di semua mesin kami. Jawaban di bawah sejauh ini tidak membantu situasi ini. - dfrankow
unix.stackexchange.com/questions/38737/… || unix.stackexchange.com/questions/38737/… || stackoverflow.com/questions/233217/pass-password-to-su-sudo-ssh - Ciro Santilli 新疆改造中心 六四事件 法轮功
Pertanyaan yang sangat penting. Saya perlu jawaban juga, penyedia ruang web saya memblokir untuk meletakkan keyfiles di server, jadi saya harus lulus passwort tanpa keyfiles. - Radon8472


Jawaban:


Jangan gunakan kata sandi. Hasilkan kunci SSH passphraseless dan dorong ke VM Anda.

Jika Anda sudah memiliki kunci SSH, Anda dapat melewati langkah ini ... Pukul saja Memasukkan untuk kunci dan kedua passphrase:

$ ssh-keygen -t rsa -b 2048
Generating public/private rsa key pair.
Enter file in which to save the key (/home/username/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/username/.ssh/id_rsa.
Your public key has been saved in /home/username/.ssh/id_rsa.pub.

Salin kunci Anda ke server target:

$ ssh-copy-id id@server
id@server's password: 

Sekarang coba masuk ke mesin, dengan ssh 'id@server', dan check in:

.ssh/authorized_keys

untuk memastikan kami belum menambahkan kunci ekstra yang tidak Anda harapkan.

Akhirnya periksa masuk ...

$ ssh id@server

id@server:~$ 

Anda mungkin juga ingin menggunakannya ssh-agent jika Anda ingin mencoba menjaga kunci Anda dilindungi dengan frasa sandi.


296
2018-03-01 11:17



Saya akhirnya memutuskan menggunakan pasangan kunci. Karena saya menyadari itu adalah cara yang paling sederhana. - Eonil
@Eonil: Jangan tergoda untuk menggunakan kunci tanpa frasa sandi. Pelajari cara menggunakan ssh-agent atau kontes. - Iain
Ini adalah jawaban yang bagus, tetapi bukan jawaban yang benar untuk pertanyaan itu. - John Hunt
Jawaban-jawaban seperti ini sungguh sangat mengganggu saya. Bukan itu pertanyaannya. Tidak ada yang bertanya bagaimana menggunakan pasangan kunci. - Matt Fletcher
Ini tidak menjawab pertanyaan. Ini adalah jawaban yang bagus untuk pertanyaan yang sama sekali berbeda, tetapi sangat buruk untuk yang diminta. - srchulo


$ sudo apt-get install sshpass
$ sshpass -p your_password ssh user@hostname

495
2018-05-31 09:08



Yup, kadang-kadang Anda tidak dapat menggunakan auth berbasis kunci untuk berbagai alasan .. misalnya sekarang saya tidak dapat menggunakan keyauth pada server plesk karena di luar kotak itu tidak diaktifkan dan saya tidak memiliki root. - John Hunt
+1! Sebagai catatan tambahan, Anda harus berlari polos ssh sekali sebelum menggunakan sshpass, untuk mengkonfirmasi sidik jari RSA - user123444555621
-1 karena harus menggunakan kata sandi dalam perintah. Ini log kata sandi di .bash_history dalam teks biasa di komputer Anda.
@MisterDood Anda bisa berlari history -r setelah perintah untuk menghapus riwayat Anda. Poin bagus. - NuclearPeon
Pro tip: Jika Anda tidak ingin memiliki perintah khusus muncul di .bash_history, awali perintah dengan spasi. Itu hanya berfungsi. Namun, pengguna perintah ini harus lebih peduli bahwa pengguna yang tidak memiliki hak istimewa pada sistem dapat melihat baris perintah lengkap dengan id, yang tentu saja termasuk kata sandinya. Karena sesi ssh cenderung berumur panjang, ini adalah masalah keamanan. - CubicleSoft


Jawaban mudah di tiga langkah mudah

Hasilkan a rsa keypair:

# ssh-keygen

lalu salin di server dengan satu perintah sederhana:

# ssh-copy-id userid@hostname

Anda sekarang dapat masuk tanpa kata sandi:

# ssh userid@hostname

56
2017-11-14 12:57



Bekerja dengan baik dengan nilai default. Menggunakan ~ / rsa4live.pub tidak bekerja untuk saya ketika mencoba ssh-copy-id. - Cees Timmerman
Jika Anda ingin langkah ini bekerja untuk pengguna yang berbeda, 1. ssh-keygen 2. ssh-copy-id nazir @ hostname 3. ssh nazir @ hostname - Venfah Nazir
Bagi saya itu ssh-copy-id -i ~/.ssh/tatu-key-ecdsa user@host - Gabriel Fair
Ini bukan jawaban untuk pertanyaan itu. - Steve Bennett
Dan? Jawabannya di atas, sshpass ... - lzap


Gunakan berharap:

#!/usr/bin/expect -f
#  ./ssh.exp password 192.168.1.11 id
set pass [lrange $argv 0 0]
set server [lrange $argv 1 1]
set name [lrange $argv 2 2]

spawn ssh $name@$server
match_max 100000
expect "*?assword:*"
send -- "$pass\r"
send -- "\r"
interact

Contoh:

# ./1.ex password localhost ooshro
spawn ssh ooshro@localhost
ooshro@localhost's password: 
Linux ubuntu-1010-server-01 2.6.35-25-generic-pae #44-Ubuntu SMP Fri Jan 21 19:01:46 UTC 2011 i686 GNU/Linux
Ubuntu 10.10

Welcome to Ubuntu!
 * Documentation:  https://help.ubuntu.com/
Last login: Tue Mar  1 12:41:12 2011 from localhost

25
2018-03-01 11:08



Itu berhasil tetapi tidak bisa mencetak stdout mesin remote. - Eonil
itu bekerja dengan baik untuk beberapa mesin tidak dapat meletakkan kunci di muka karena alamat IP berubah setiap kali. - larrycai
itu akan baik untuk ditambahkan -oStrictHostKeyChecking=no -oUserKnownHostsFile=/dev/null untuk perintah ssh juga untuk menghindari menerima mesin menjadi known_hosts - larrycai
B .. b tapi kunci ssh muh ... - Damien Ó Ceallaigh
Contoh lebih rinci dari skrip ini dapat Anda temukan di: linuxaria.com/howto/…  Contoh di sini harus bekerja dengan perintah jarak jauh juga - Radon8472


Ini mungkin tidak ada gunanya bagi Anda, tetapi Anda dapat melakukannya dengan Perl:

\#!/usr/bin/perl  
use warnings;  
use strict;  

use Net::SSH::Perl;  
my $host = 'remote.serv.er';  
my $user = 'root';  
my $pass = 'hunter2';  
my $ssh = Net::SSH::Perl->new('$host');  
$ssh->login('$user', '$pass') or die "Oh noes! $!";

11
2018-03-01 11:52



Demikian juga, Anda bisa melakukannya dengan Ruby ini github.com/net-ssh/net-ssh - EnabrenTane


Tentu Anda tidak ingin menggunakan kunci SSH daripada kata sandi? Dengan cara itu aman dan otomatis.


9
2018-03-01 11:14



Menggunakan kunci SSH tanpa kata sandi hanya sedikit lebih aman daripada menggunakan kata sandi dalam file. - yunzen
@yunzen Salah. Otentikasi kunci melindungi Anda dari serangan mitm bahkan jika Anda tidak tahu kunci tuan rumah. Penyerang dapat meniru server, tetapi tidak pernah terhubung ke server sebenarnya. Dengan otentikasi kata sandi, setiap server yang Anda hubungkan (sah atau tidak) akan melihat kata sandinya. Untuk alasan itu kunci ssh tanpa kata sandi jauh lebih aman daripada hanya menyimpan kata sandi dalam file. - kasperd
Ini bukan jawaban. - Steve Bennett
@SteveBennett Ini sama dengan jawaban yang diterima dan telah diposting sebelumnya, meskipun itu kurang detail. - Michael Hampton♦
Yah, saya akan mengatakan jawaban yang diterima adalah jawaban yang layak untuk pertanyaan yang tidak ditanyakan. Ini bukan apa-apa. - Steve Bennett


Saya terkejut tidak ada yang disebutkan plink dari putty-tools paket di Ubuntu:

plink user@domain -pw mypass  [cmd]

Ini juga tersedia di Windows dan sintaksnya sebagian besar kompatibel dengan klien openssh.


4
2017-07-09 13:15



Untuk windows, jawaban Anda bagus, unlinunally linux / unix user biasanya tidak memiliki plink - Radon8472
itu ada di dalam putty-tools paket - eadmaster