सवाल पासवर्ड के साथ एसएसएच लॉगिन स्वचालित कैसे करें?


पासवर्ड के साथ एसएसएच लॉगिन स्वचालित कैसे करें? मैं अपने परीक्षण वीएम को विन्यस्त कर रहा हूं, इसलिए भारी सुरक्षा पर विचार नहीं किया जाता है। एसएसएच न्यूनतम विन्यास के साथ स्वीकार्य सुरक्षा के लिए चुना गया।

पूर्व)

echo password | ssh id@server

यह काम नहीं करता है।

मुझे याद है मैंने कुछ चालों के साथ ऐसा किया है, किसी ने मुझे निर्देशित किया है, लेकिन अब मुझे याद नहीं है कि मैं जिस चाल का उपयोग करता हूं ...


332
2018-03-01 11:07


मूल


फ्रीबीएसडी ने पासवर्ड-कम कुंजी स्वीकार नहीं की है। मोहब्बत मत करो। हालांकि कुछ लिनक्स सर्वर इसे स्वीकार करते हैं। मेरा मानना ​​है कि लिनक्स सर्वर गलत कॉन्फ़िगर किया गया था। - Eonil
यह एक वैध सवाल है। उदाहरण के लिए, मैं उपयोगकर्ता को पासवर्ड दर्ज करने की अनुमति देना चाहता हूं, फिर इसका उपयोग करके किसी अन्य मशीन में लॉग इन करें। मैं यह नहीं मान सकता कि हमारी सभी मशीनों में एसएसएच कुंजी वितरित की जाएगी। अब तक के जवाब इस स्थिति में मदद नहीं करते हैं। - dfrankow
unix.stackexchange.com/questions/38737/... || unix.stackexchange.com/questions/38737/... || stackoverflow.com/questions/233217/pass-password-to-su-sudo-ssh - Ciro Santilli 新疆改造中心 六四事件 法轮功
बहुत महत्वपूर्ण सवाल है। मुझे भी एक जवाब चाहिए, मेरे वेबस्पेस प्रदाता सर्वर पर keyfiles डालने के लिए ब्लॉक, तो मुझे keyfiles के बिना passwort पास करना होगा। - Radon8472


जवाब:


पासवर्ड का प्रयोग न करें। एक पासफ्रेलेस एसएसएच कुंजी उत्पन्न करें और इसे अपने वीएम पर दबाएं।

यदि आपके पास पहले से ही एक एसएसएच कुंजी है, तो आप इस चरण को छोड़ सकते हैं ... बस मारा दर्ज कुंजी और दोनों पासफ्रेज के लिए:

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

अपनी कुंजी को लक्ष्य सर्वर पर कॉपी करें:

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

अब मशीन में लॉग इन करने का प्रयास करें ssh 'id@server', और चेक इन करें:

.ssh/authorized_keys

यह सुनिश्चित करने के लिए कि हमने अतिरिक्त कुंजी नहीं जोड़े हैं जिन्हें आप उम्मीद नहीं कर रहे थे।

अंत में लॉग इन जांचें ...

$ ssh id@server

id@server:~$ 

आप भी उपयोग में देखना चाहते हैं ssh-agent यदि आप अपनी चाबियाँ पासफ्रेज़ से सुरक्षित रखने की कोशिश करना चाहते हैं।


296
2018-03-01 11:17



अंत में मैंने मुख्य जोड़े का उपयोग करने का फैसला किया। क्योंकि मुझे एहसास हुआ कि यह सबसे आसान तरीका है। - Eonil
@Eonil: पास वाक्यांश के बिना कुंजी का उपयोग करने के लिए लुभाने मत बनो। एसएसएच एजेंट या पेजेंट का उपयोग कैसे करें सीखें। - Iain
यह एक अच्छा जवाब है, लेकिन सवाल का सही जवाब नहीं है। - John Hunt
वास्तव में इन प्रकार के उत्तरों, वास्तव में मुझे परेशान करते हैं। वह सवाल नहीं था। किसी ने भी पूछा कि कुंजी जोड़े का उपयोग कैसे करें। - Matt Fletcher
यह सवाल का जवाब नहीं देता है। यह एक पूरी तरह से अलग सवाल के लिए एक अच्छा जवाब है, लेकिन यह पूछने के लिए यह भयानक है। - srchulo


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

495
2018-05-31 09:08



हां, कभी-कभी आप विभिन्न कारणों से कुंजी आधारित ऑथ का उपयोग नहीं कर सकते .. उदाहरण के लिए अभी मैं एक प्लेस्क सर्वर पर कीउथ का उपयोग नहीं कर सकता क्योंकि बॉक्स को सक्षम नहीं किया गया है और मेरे पास रूट नहीं है। - John Hunt
+1! एक साइड नोट के रूप में, आपको सादा चलाने की जरूरत है ssh एक बार उपयोग करने से पहले sshpass, आरएसए फिंगरप्रिंट की पुष्टि करने के लिए - user123444555621
आदेश में पासवर्ड का उपयोग करने के लिए -1। यह पासवर्ड लॉग इन करता है .bash_history आपकी मशीन पर सादे पाठ में।
@MisterDood आप चला सकते हैं history -r अपने इतिहास को मिटाने के आदेश के बाद। हालांकि अच्छा बिंदु। - NuclearPeon
प्रो टिप: यदि आप .bash_history में कोई विशिष्ट कमांड नहीं दिखाना चाहते हैं, तो स्पेस के साथ कमांड को उपसर्ग करें। यह सिर्फ काम करता है। हालांकि, इस कमांड के उपयोगकर्ताओं को अधिक चिंतित होना चाहिए कि सिस्टम पर गैर-विशेषाधिकार प्राप्त उपयोगकर्ता पीएस के साथ पूर्ण कमांड लाइन देख सकते हैं, जिसमें निश्चित रूप से पासवर्ड शामिल है। चूंकि एसएसएच सत्र लंबे समय तक रहते हैं, यह एक सुरक्षा मुद्दा है। - CubicleSoft


आसान जवाब में तीन आसान कदम

एक उत्पन्न करें आरएसए कीपैयर:

# ssh-keygen

फिर इसे सर्वर पर कॉपी करें एक साधारण आदेश:

# ssh-copy-id userid@hostname

अब आप लॉग इन कर सकते हैं पासवर्ड के बिना:

# ssh userid@hostname

56
2017-11-14 12:57



डिफ़ॉल्ट मानों के साथ ठीक काम करता है। कोशिश करते समय ~ / rsa4live.pub का उपयोग मेरे लिए काम नहीं किया ssh-copy-id। - Cees Timmerman
यदि आप यह कदम अलग-अलग उपयोगकर्ता के लिए काम करना चाहते हैं, तो 1. ssh-keygen 2. ssh-copy-id nazir @ hostname 3. ssh nazir @ hostname - Venfah Nazir
मेरे लिए यह था ssh-copy-id -i ~/.ssh/tatu-key-ecdsa user@host - Gabriel Fair
यह सवाल का जवाब नहीं है। - Steve Bennett
तथा? जवाब ऊपर है, sshpass ... - lzap


उम्मीद का प्रयोग करें:

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

उदाहरण:

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



यह काम करता है लेकिन यह रिमोट मशीन के stdout मुद्रित नहीं कर सकता है। - Eonil
यह अच्छी तरह से काम करता है क्योंकि कुछ मशीन अग्रिम में कुंजी नहीं डाल सकती क्योंकि आईपी पता हर बार बदल जाता है। - larrycai
यह जोड़ना अच्छा होगा -oStrictHostKeyChecking=no -oUserKnownHostsFile=/dev/null ssh कमांड के लिए भी मशीन को ज्ञात_होस्ट में स्वीकार करने से बचें - larrycai
बी .. बी लेकिन मुह ssh कुंजी ... - Damien Ó Ceallaigh
इस स्क्रिप्ट का अधिक विस्तृत उदाहरण आप यहां देख सकते हैं: linuxaria.com/howto/...  यहां दिए गए उदाहरणों को रिमोट कमांड के साथ भी काम करना चाहिए - Radon8472


यह आपके लिए कोई उपयोग नहीं हो सकता है, लेकिन आप इसे पर्ल के साथ कर सकते हैं:

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



इसी तरह, आप इस रूबी के साथ कर सकते हैं github.com/net-ssh/net-ssh - EnabrenTane


निश्चित रूप से आप पासवर्ड के बजाय एसएसएच कुंजी का उपयोग नहीं करना चाहते हैं? इस तरह यह सुरक्षित और स्वचालित दोनों है।


9
2018-03-01 11:14



पासवर्ड के बिना एसएसएच कुंजी का उपयोग करना फ़ाइल में पासवर्ड का उपयोग करने से थोड़ा अधिक सुरक्षित है। - yunzen
@yunzen गलत। कुंजी प्रमाणीकरण आपको एमआईटीएम-हमलों से बचाता है भले ही आप होस्ट कुंजी नहीं जानते हैं। एक हमलावर सर्वर का प्रतिरूपण कर सकता है, लेकिन वास्तविक सर्वर से कभी कनेक्ट नहीं हो सकता है। पासवर्ड प्रमाणीकरण के साथ आप जिस सर्वर से कनेक्ट होते हैं (वैध या नहीं) पासवर्ड देखेंगे। उन कारणों से पासवर्ड के बिना एक एसएसएच कुंजी सिर्फ फाइल में पासवर्ड संग्रहीत करने से कहीं अधिक सुरक्षित है। - kasperd
यह एक जवाब नहीं है। - Steve Bennett
@SteveBennett यह स्वीकार्य उत्तर के समान है और इससे पहले पोस्ट किया गया था, हालांकि इसमें कम जानकारी है। - Michael Hampton♦
खैर, मैं कहूंगा कि स्वीकार्य उत्तर एक प्रश्न का एक सभ्य उत्तर है जिसे नहीं पूछा गया था। यह कुछ भी नहीं है। - Steve Bennett


मुझे आश्चर्य है कि किसी ने भी उल्लेख नहीं किया plink वहाँ से putty-tools उबंटू में पैकेज:

plink user@domain -pw mypass  [cmd]

यह विंडोज पर भी उपलब्ध है और सिंटैक्स ज्यादातर ओपनश क्लाइंट के साथ संगत है।


4
2017-07-09 13:15



विंडोज़ के लिए आपका जवाब अच्छा है, असुरक्षित रूप से लिनक्स / यूनिक्स उपयोगकर्ता आमतौर पर झपकी नहीं लेता है - Radon8472
वह उस में है putty-tools पैकेज - eadmaster