Soru SSH giriş şifresiyle nasıl otomatikleştirilir?


SSH giriş şifresiyle nasıl otomatikleştirilir? Test VM'imi yapılandıracağım, bu yüzden ağır güvenlik dikkate alınmaz. SSH, minimum yapılandırma ile kabul edilebilir güvenlik için seçildi.

ex)

echo password | ssh id@server

Bu işe yaramıyor.

Birilerinin bana rehberlik ettiği bazı hilelerle yaptığımı hatırlıyorum ama şimdi kullandığım numarayı hatırlayamıyorum.


335
2018-03-01 11:07


Menşei


FreeBSD şifre içermeyen anahtarları kabul etmedi. Cazip olmayın. Ancak bazı Linux sunucuları bunu kabul etti. Linux sunucusunun yanlış yapılandırıldığına inanıyorum. - Eonil
Bu geçerli bir sorudur. Örneğin, bir kullanıcının bir parola girmesine izin vermek, sonra onu kullanarak başka bir makinede oturum açmak istiyorum. Tüm makinelerimizde ssh anahtarlarının dağıtılacağını varsayamam. Şimdiye kadar verilen cevaplar bu duruma yardımcı olmuyor. - dfrankow
unix.stackexchange.com/questions/38737/... || unix.stackexchange.com/questions/38737/... || stackoverflow.com/questions/233217/pass-password-to-su-sudo-ssh - Ciro Santilli 新疆改造中心 六四事件 法轮功
Çok önemli bir soru. Ben de bir cevaba ihtiyacım var, webspace sağlayıcım sunucuya anahtar kelimeler koymayı engelliyor, bu yüzden passwort'u anahtar kelimeler olmadan geçirmeliyim. - Radon8472


Cevaplar:


Şifre kullanmayın. Bir parolasız SSH anahtarı oluşturun ve bunu VM'nize aktarın.

Zaten bir SSH anahtarınız varsa, bu adımı atlayabilirsiniz. Sadece vur Girmek Anahtar ve her iki parola için:

$ 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.

Anahtarlarınızı hedef sunucuya kopyalayın:

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

Şimdi, makineye giriş yapmayı deneyin. ssh 'id@server've check in yapın:

.ssh/authorized_keys

Beklemediğiniz ekstra anahtarlar eklemediğimizden emin olmak için.

Sonunda giriş yapın…

$ ssh id@server

id@server:~$ 

Ayrıca kullanmak isteyebilirsiniz ssh-agent Anahtarlarınızı bir parola ile korumayı denemek isterseniz.


302
2018-03-01 11:17



Sonunda anahtar çiftleri kullanmaya karar verdim. Çünkü bunun en basit yol olduğunu anladım. - Eonil
@Eonil: Anahtarları pass cümlesi olmadan kullanmak için cazip olmayın. Ssh-agent'ı veya yarışmayı nasıl kullanacağınızı öğrenin. - Iain
Bu iyi bir cevap, ancak sorunun doğru cevabı değil. - John Hunt
Bu tür cevaplar gerçekten beni gerçekten sinirlendiriyor. Bu soru değildi. Kimse anahtar çiftleri nasıl kullanacaklarını sormadı. - Matt Fletcher
Bu soruya cevap vermiyor. Tamamen farklı bir soru için iyi bir cevap, ama sorulan için korkunç. - srchulo


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

500
2018-05-31 09:08



Evet, bazen çeşitli nedenlerden dolayı anahtar temelli yetkilendirmeyi kullanamazsınız. Örneğin, şu anda bir plesk sunucusunda keyauth kullanamıyorum çünkü bu kutu etkin değil ve root'um yok. - John Hunt
1! Bir yan not olarak, düz koşmanız gerekir ssh kullanmadan önce bir kez sshpassRSA parmak izini doğrulamak için - user123444555621
Komutdaki parolayı kullanmak için -1. Bu şifreyi şu adrese kaydeder: .bash_history makinenizdeki düz metinde.
@MisterDood Koşabilirsin history -r Tarihinizi silmek için komutadan sonra. İyi bir nokta olsa da. - NuclearPeon
Pro ipucu: .bash_history'de belirli bir komutun görünmesini istemiyorsanız, komutu bir boşluk ile önekleyin. Sadece işe yarıyor. Bununla birlikte, bu komutun kullanıcıları, sistemdeki ayrıcalıklı olmayan kullanıcıların ps ile tam komut satırını görebileceği konusunda endişelenmelidir, ki bu da elbette parola içerir. Ssh oturumları uzun ömürlü olduğundan, bu bir güvenlik sorunudur. - CubicleSoft


Kolay cevap üç kolay adım

Oluşturmak rsa keypair:

# ssh-keygen

daha sonra sunucuya kopyalayın. tek bir basit komut:

# ssh-copy-id userid@hostname

şimdi giriş yapabilirsiniz şifre olmadan:

# ssh userid@hostname

57
2017-11-14 12:57



Varsayılan değerler ile iyi çalışır. ~ / Rsa4live.pub kullanma denemede işe yaramadı ssh-copy-id. - Cees Timmerman
Bu adımın farklı kullanıcı için çalışmasını istiyorsanız, 1. ssh-keygen 2. ssh-copy-id nazir @ hostname 3. ssh nazir @ hostname - Venfah Nazir
Benim için ssh-copy-id -i ~/.ssh/tatu-key-ecdsa user@host - Gabriel Fair
Bu sorunun cevabı değil. - Steve Bennett
Ve? Cevap yukarıda, sshpass ... - lzap


Bekleyen kullan:

#!/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

Örnek:

# ./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

27
2018-03-01 11:08



Çalıştı ancak uzak makinenin stdout'unu basamaz. - Eonil
IP adresi her seferinde değiştiği için, bazı makine için bu anahtarın önceden giremeyeceği iyi çalışır. - larrycai
eklemek güzel olacak -oStrictHostKeyChecking=no -oUserKnownHostsFile=/dev/null makineyi bilinen_host'lara kabul etmekten kaçınmak için ssh komutu için - larrycai
B .. b ama muh ssh anahtarları ... - Damien Ó Ceallaigh
Bu betiğin daha ayrıntılı bir örneğini şu adreste bulabilirsiniz: linuxaria.com/howto/...  Buradaki örnekler de uzak komutlarla çalışmalıdır. - Radon8472


Bu sizin için herhangi bir kullanım olmayabilir, ancak Perl ile yapabilirsiniz:

\#!/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



Aynı şekilde, bu Ruby ile yapabilirsiniz github.com/net-ssh/net-ssh - EnabrenTane


Şifreler yerine SSH anahtarlarını kullanmak istemediğinden emin misiniz? Böylece hem güvenli hem otomatik.


9
2018-03-01 11:14



SSH anahtarlarını şifre olmadan kullanmak, bir dosyadaki şifreleri kullanmaktan sadece biraz daha güvenlidir. - yunzen
@yunzen Yanlış. Anahtar kimlik doğrulaması, ana bilgisayar anahtarını bilmiyor olsanız bile sizi mitm saldırılarına karşı korur. Saldırgan, sunucunun kimliğine bürünebilir, ancak gerçek sunucuya asla bağlanamaz. Parola kimlik doğrulaması ile bağlandığınız herhangi bir sunucu (yasal veya değil) parolayı görecektir. Bu nedenlerle parola olmadan ssh anahtarının bir dosyada parola depolanmasından çok daha güvenli olduğunu. - kasperd
Bu bir cevap değil. - Steve Bennett
@SteveBennett Kabul edilen cevap ile aynıdır ve daha az ayrıntıya sahip olmasına rağmen, daha önce yayınlanmıştır. - Michael Hampton♦
Eh, kabul edilen cevabın, sorulmamış bir soruya doğru bir cevap olduğunu söyleyebilirim. Bu bir şey değil. - Steve Bennett


Kimsenin bahsettiğine şaşırdım plink itibaren putty-tools Ubuntu'da paket:

plink user@domain -pw mypass  [cmd]

Ayrıca Windows'da da kullanılabilir ve sözdizimi çoğunlukla openssh istemcisi ile uyumludur.


5
2017-07-09 13:15



Pencereler için cevabınız iyi, uningenunus linux / unix kullanıcısı genellikle farketmez - Radon8472
içinde putty-tools paket - eadmaster