खोज…


टिप्पणियों

SSH (सिक्योर शेल) असुरक्षित नेटवर्क (इंटरनेट) पर पॉइंट-टू-पॉइंट कम्युनिकेशन के लिए एक क्रिप्टोग्राफ़िक प्रोटोकॉल है। यह अप्रयुक्त बना पुराने दिनों (में इस्तेमाल पुराने प्रोटोकॉल rlogin , rsh , telnet )।

यह आमतौर पर रिमोट सर्वर, वर्चुअल मशीन या कंटेनर से डेटा सेंटर या आपके निजी क्लाउड (Google कंप्यूट इंजन, एडब्ल्यूएस, ...) में कनेक्ट करने के लिए उपयोग किया जाता है। लेकिन इसका उपयोग आमतौर पर पासवर्ड के बजाय सार्वजनिक कुंजी का उपयोग करके अपनी रिपॉजिटरी को सुरक्षित और आसान तरीके से एक्सेस करने और अपडेट करने के लिए git के साथ संयोजन में किया जाता है।

यह भी ssh के भीतर किसी भी बड़े विषयों का उल्लेख करना चाहिए, और संबंधित विषयों के लिए लिंक करना चाहिए। चूँकि ssh के लिए दस्तावेज़ीकरण नया है, इसलिए आपको उन संबंधित विषयों के प्रारंभिक संस्करण बनाने की आवश्यकता हो सकती है। करने के लिए

संस्करण

संस्करण रिलीज नोट्स रिलीज़ की तारीख
ओपनएसएसएच 7.3 पी 1 नवीनतम संस्करण 2016/08/01
ओपनएसएसएच 7.2 पी 2 2016/03/09
ओपनएसएसएच 7.1 पी 2 2016/01/14
ओपनएसएसएच 7.1 2015/08/21
ओपनएसएसएच 7.0 2015/11/08
ओपनएसएसएच 6.9 2015/07/01
ओपनएसएसएच 6.8 2015/03/18

स्थापना या सेटअप

SSH प्रोटोकॉल कार्यान्वयन का मुक्त संस्करण, OpenSSH सभी लिनक्स वितरण में उपलब्ध है। इसमें सर्वर और क्लाइंट पैकेज होते हैं।

स्थापना

डेबियन-आधारित लिनक्स पर, आप openssh का उपयोग करके इंस्टॉल कर सकते हैं

# apt-get install openssh-server openssh-client

RHEL / CentOS पर आपको yum का उपयोग करने की आवश्यकता है:

# yum install openssh-server openssh-clients

वर्तमान फेडोरा yum बजाय dnf का उपयोग कर रहा है।

आर्क लिनक्स पर, pacman का उपयोग करें:

# pacman -S openssh

ओएसएक्स पर, openssh को पहले से ही स्थापित किया जाना चाहिए।

आप सबसे नवीनतम संस्करण का उपयोग करना चाहते हैं, तो आप स्थापित करने की आवश्यकता openssh काढ़ा से:

# brew install openssh --with-brewed-openssl --with-keychain-support

विंडोज के लिए TODO निर्देश

सेट अप

openssh क्लाइंट को किसी विशेष सेटअप की आवश्यकता नहीं है और स्थापना के तुरंत बाद उपयोग करने के लिए तैयार है। आप उस रनिंग ssh remote कोशिश कर सकते हैं, जहां remote रिमोट होस्ट रनिंग ssh सर्वर है।

openssh सर्वर आमतौर पर स्थापना और डिफ़ॉल्ट सेटअप लागू होने के बाद शुरू किया जाता है। यदि नहीं, तो आप पर यह शुरू कर सकते हैं systemd का उपयोग कर आधारित सिस्टम

सिस्टम के साथ डेबियन-आधारित लिनक्स:

# systemctl start ssh

आरएचईएल / सेंटोस / फेडोरा और आर्क लिनक्स पर:

# systemctl start sshd

या अपस्टार्ट सिस्टम के उपयोग से

# service sshd start

विन्यास

openssh पास /etc/ssh/ तहत विन्यास फाइल है। क्लाइंट ~/.ssh/config में क्लाइंट कॉन्फ़िगरेशन भी पढ़ रहा है। सर्वर एक फ़ाइल sshd_config का उपयोग कर रहा है, जिसमें अधिकांश डिफ़ॉल्ट मान हैं और इसमें सरल कुंजी-मान जोड़े हैं। उदाहरण:

Protocol 2
PasswordAuthentication yes
ChallengeResponseAuthentication no
UsePAM yes
AcceptEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY
X11Forwarding yes
Subsystem    sftp    /usr/libexec/openssh/sftp-server

अपनी SSH कुंजी बनाना

आप ssh-keygen का उपयोग करके अपनी ssh कुंजी बना सकते हैं, यह एक प्रोग्राम है जो ssh इंस्टॉलेशन का हिस्सा है। ऐसा करने के लिए बस इसे चलाएं और स्क्रीन पर निर्देशों का पालन करें।

यहाँ एक उदाहरण है:

$ ssh-keygen
Generating public/private rsa key pair.

डिफ़ॉल्ट निर्देशिका जहां आप ssh कुंजी जोड़ी को सहेजा जाएगा, आपके घर निर्देशिका में .ssh फ़ोल्डर के अंदर है (आप इसे एक मान्य पथ निर्दिष्ट करके बदल सकते हैं) और कीपेयर के लिए डिफ़ॉल्ट नाम id_rsa निजी कुंजी और id_rsa.pub लिए है सार्वजनिक कुंजी:

Enter file in which to save the key (/home/nasreddine/.ssh/id_rsa): /home/my_folder/my_ssh_key

आप पासवर्ड दर्ज करके अपने SSH कुंजी को अनधिकृत उपयोग से बचा सकते हैं। यह वैकल्पिक है लेकिन यह अनुशंसा की जाती है कि आप पासफ़्रेज़ का उपयोग करें। ध्यान दें कि, किसी भी अन्य कमांड प्रोग्राम के साथ, जब आपके पासफ़्रेज़ में प्रवेश करते समय यह स्क्रीन पर कुछ भी नहीं दिखाएगा लेकिन इसे रिकॉर्ड किया जा रहा है:

Enter passphrase (empty for no passphrase):
Enter same passphrase again:

एक बार जब आप अपना पासफ़्रेज़ ssh-keygen दर्ज करते हैं तो एक कुंजी उत्पन्न होगी और इसे आपके द्वारा चुने गए पथ पर सहेजा जाएगा:

Your identification has been saved in /home/my_folder/my_ssh_key.
Your public key has been saved in /home/my_folder/my_ssh_key.pub.

हमारा काम हो गया। अब हमारी ssh कुंजी उपयोग के लिए तैयार है।

यहाँ छवि विवरण दर्ज करें

मशीन में SSH कैसे करें

SSH के साथ मशीन पर उपयोगकर्ता के खाते में प्रवेश करने के लिए आप कमांड ssh username@ip_address उपयोग कर सकते हैं। यह पासवर्ड मांगेगा। यदि आप सही पासवर्ड टाइप करते हैं, तो आप उस मशीन पर उस उपयोगकर्ता के शेल से जुड़े रहेंगे। अन्यथा यह पासवर्ड के लिए फिर से संकेत देगा।

उदाहरण के लिए

root@dev10:~# ssh [email protected]
[email protected]'s password: 
Welcome to Ubuntu 16.04 LTS (GNU/Linux 4.4.0-31-generic x86_64)
    
Last login: Fri Jul 22 18:33:27 2016 from 10.11.50.10
root@dev2:~# 

यदि आप किसी मशीन से कनेक्ट करने के लिए एक विशिष्ट ssh कुंजी का उपयोग करना चाहते हैं, तो ssh -i /path/to/ssh_secret_key username@host

जब आप पहली बार किसी मशीन से जुड़ रहे हैं, तो यह आपको लक्ष्य मशीन के फिंगरप्रिंट को सत्यापित करने के लिए कहेगा। यह एक मानव-मध्य हमले से बचने के लिए एक सुरक्षा तंत्र है। आप लक्ष्य मशीन में इस आदेश को जारी करके लक्ष्य मशीन के फिंगरप्रिंट देख सकते हैं।

ssh-keygen -l -E md5 -f /etc/ssh/ssh_host_ecdsa_key.pub

आप "हाँ" टाइप कर सकते हैं यदि दोनों समान हैं। यह पासवर्ड प्रॉम्प्ट पर आगे बढ़ेगा।

उदाहरण:

root@dev10:~# ssh [email protected]
The authenticity of host '10.11.50.3 (10.11.50.3)' can't be established.
ECDSA key fingerprint is dd:a3:de:cd:5b:01:cd:0b:b6:bc:b3:09:c2:c8:1a:68.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '10.11.50.3' (ECDSA) to the list of known hosts.
[email protected]'s password: 

Last login: Fri Jul 22 17:45:09 2016 from 10.11.1.71
root@dev2:~# 

सर्वर की अधिकृत कुंजी की सूची में अपनी सार्वजनिक कुंजी जोड़ना

सर्वर में ssh करने के लिए आपकी पहचान की सार्वजनिक कुंजी को विश्वसनीय कुंजियों की सूची में जोड़ा जाना चाहिए। आमतौर पर यह प्रति उपयोगकर्ता किया जाता है:

ssh-copy-id -i ~/.ssh/<identity>.pub <user>@<hostname>

जिसे मैन्युअल रूप से भी किया जा सकता है:

cat ~/.ssh/<identity>.pub | ssh <user>@<hostname> 'cat >> ~/.ssh/authorized_keys'

ऐसा करने के बाद, आपको ssh कॉल में पहचान फ़ाइल पास करते समय उपयोगकर्ता का पासवर्ड प्रदान करने की आवश्यकता के बिना लॉग इन करने में सक्षम होना चाहिए।

पासवर्ड का उपयोग करके स्क्रिप्ट से कनेक्ट करना

जब आपको वास्तव में ssh कनेक्शन को स्क्रिप्ट करने की आवश्यकता होती है, तो ssh कमांड में पासवर्ड डालने से काम नहीं echo passw0rd | ssh host ( echo passw0rd | ssh host )। ऐसा इसलिए है क्योंकि पासवर्ड को मानक इनपुट से नहीं पढ़ा जाता है, लेकिन सीधे TTY (टेलीप्रिंटर, टेलेटाइप्रिटर, टेलेटाइप से ऐतिहासिक कारणों के लिए)।

लेकिन sshpass टूल है जो इस समस्या के आसपास काम करता है। यह पैरामीटर, फ़ाइल या पर्यावरण चर से पासवर्ड पढ़ सकता है। लेकिन ध्यान दें कि इनमें से कोई भी विकल्प पासवर्ड के लिए सुरक्षा आवश्यकताओं को पूरा नहीं करता है!

$ sshpass -p passw0rd ssh host
$ sshpass -f /secret/filename ssh host
$ SSHPASS=passw0rd sshpass -e ssh host

कमांड लाइन विकल्प अन्य उपयोगकर्ताओं द्वारा ps में देखा जा सकता है (रनटाइम के दौरान यह नकाबपोश है, लेकिन शुरुआत के समय के दौरान नहीं और आप इस पर भरोसा नहीं कर सकते हैं):

... 23624  6216 pts/5    Ss   Aug30   0:00  \_ /bin/bash
... 12812  1988 pts/5    S+   08:50   0:00  |   \_ sshpass -p passw0rd ssh host
... 45008  5796 pts/15   Ss+  08:50   0:00  |       \_ ssh host

ध्यान दें, एक प्रक्रिया के environemnet चर भी /proc/PID/environ फ़ाइल का उपयोग कर सिस्टम पर अन्य प्रक्रियाओं द्वारा सुलभ हैं।

अंत में, फ़ाइल में पासवर्ड को स्टोर करना सबसे अच्छा संभव विचार जैसा लग सकता है, लेकिन फिर भी चाबियों का उपयोग करके अन्य उदाहरणों में वर्णित ssh का उपयोग करने का पसंदीदा तरीका है।

फ़ाइल को कॉन्फ़िगर करें

OpenSSH विन्यास फाइल का उपयोग विन्यास के लिए किया जाता है जिसे हर बार ssh क्लाइंट के चलने पर लागू किया जाना चाहिए। अधिकांश कमांड लाइन विकल्प विन्यास फाइल में डालना संभव है।

OpenSSH क्रम में निम्नलिखित स्रोतों से कॉन्फ़िगरेशन का उपयोग करता है:

  1. कमांड लाइन विकल्प
  2. उपयोगकर्ता की कॉन्फ़िगरेशन फ़ाइल ~/.ssh/config
  3. सिस्टम वाइड कॉन्फ़िगरेशन फ़ाइल /etc/ssh/ssh_config

विन्यास विकल्प विन्यास फाइल में एक-एक करके सूचीबद्ध होते हैं।

# This is a comment.

# Parameter can be specified like this, separated with white space.
StrictHostKeyChecking ask

# Or parameter key and value may be separated with white space and =.  
ForwardX11 = yes

# The parameter value can be quoted if it contains white space.    
IdentityFile "/file system/path with/white space"

संभावित कॉन्फ़िगरेशन मापदंडों की पूरी सूची यहां उपलब्ध है

कॉन्फ़िग फ़ाइल की सबसे उपयोगी विशेषताओं में से एक यह है कि इसे होस्ट नाम या पते के आधार पर विभाजित किया जा सकता है। इस तरह आपके पास अलग-अलग मेजबानों के लिए अलग-अलग कॉन्फ़िगरेशन हो सकते हैं।

# Based on host name.    

Host host1.domain.com
    User user1

Host host2.domain.com
    User user2

# Or wildcard matching name or ip.

Host *elastic-cloud.com 10.201.4.?
    User user3

SSH-एजेंट

यदि आपने एक लंबा पासफ़्रेज़ सेट किया है और हर बार जब आप सर्वर से कनेक्ट करना चाहते हैं तो इसे दर्ज करते रहना नहीं चाहते हैं, आप अपने कंप्यूटर पर लॉग इन करते समय अपने पासफ़्रेज़ को स्टोर करने के लिए SSH-Agent का उपयोग कर सकते हैं।

पृष्ठभूमि में ssh- एजेंट शुरू करें:

eval "$(ssh-agent -s)"
# Agent pid 59566

और ssh- एजेंट के लिए अपनी कुंजी जोड़ें, आपको अपना पासफ़्रेज़ दर्ज करने के लिए प्रेरित किया जाएगा:

ssh-add ~/.ssh/matrix.ac
# Enter passphrase for /home/osaka/.ssh/matrix.ac: 
# Identity added: /home/osaka/.ssh/matrix.ac (/home/osaka/.ssh/matrix.ac)

किया हुआ। अब ssh [email protected] कनेक्ट करें और आपको अपना पासफ़्रेज़ दर्ज नहीं करना चाहिए। आप ग्नोम-कीरिंग / सीहोर, किचेन और अन्य प्रमुख प्रबंधकों जैसे कार्यक्रमों का उपयोग करके इसका विस्तार कर सकते हैं।



Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow