როგორ გავხსნათ ssh. ნაგულისხმევი პროტოკოლი. დრო ამოიწურა, როდესაც კავშირი არააქტიურია

ნაწილი 2.

სანამ დავიწყებთ, მოდით შევქმნათ ახალი მომხმარებელი root უფლებებით.

მოდით მივცეთ უფლებები მომხმარებლის ტესტზე ბრძანების გამოყენებით

usermod -a -G სუდო ტესტი

იმის დასადასტურებლად, რომ სატესტო მომხმარებელი დაემატა sudo ჯგუფს, შეგიძლიათ გაუშვათ შემდეგი ბრძანება:


ახლა მოდით დავაყენოთ სერვერზე დისტანციური წვდომა ssh (ბრძანების ხაზის) საშუალებით, როგორც ლოკალურ ქსელში, ასევე ინტერნეტში.

მოდით დავაყენოთ ssh

sudo apt-get დააინსტალირე openssh-სერვერი

ინსტალაციის შემდეგ, ჩვენ უნდა დავაკონფიგურიროთ კავშირის უსაფრთხოება და პირდაპირი წვდომა. მოდით გადავიდეთ პარამეტრების ფაილზე

sudo nano /etc/ssh/sshd_config

ნაგულისხმევად, ssh იყენებს პორტს 22. მოდით შევცვალოთ ის არასტანდარტული, ეს გაზრდის ჩვენი წვდომის უსაფრთხოებას. შევცვალოთ პორტი, მაგალითად, 2200-ით

ssh-ით დაკავშირებისას, ჩვენს სერვერს პაროლის ნაცვლად RSA გასაღები დასჭირდება. ამის თავიდან ასაცილებლად, შეიყვანეთ "NO" RSAAuthentication და PubkeyAuthentication პარამეტრებში. ჩვენ ასევე უარვყოფთ წვდომას ROOT მომხმარებელზე ამისათვის, თქვენ უნდა გააუქმოთ Authetication: პარამეტრი და შეიყვანოთ "NO" პარამეტრში PermitRootLogin;

ახლა მოდით მივცეთ წვდომა მომხმარებლებს

AllowUsers ხაზში ჩვენ შევიყვანთ მომხმარებლებს გამოყოფილი ინტერვალით user@host ფორმაში, ანუ მივუთითებთ, რომელ მომხმარებელს შეუძლია საიდან დაკავშირება. შეგიძლიათ გამოიყენოთ *

მოდით, მივცეთ წვდომის უფლებები მომხმარებლის ტესტზე და შევხედოთ მათ.

    test@* - მომხმარებლის ტესტს შეუძლია დაკავშირება ნებისმიერი ადგილიდან
    [ელფოსტა დაცულია].* - მომხმარებლის ტესტს შეუძლია დაკავშირება მხოლოდ იმ შემთხვევაში, თუ ის იმყოფება 192.168.0.0 ქვექსელში
    [ელფოსტა დაცულია]- მომხმარებლის ტესტის დაკავშირება შესაძლებელია მხოლოდ IP მისამართიდან 192.168.0.104
    *@192.168.0.* - ყველა მომხმარებელს შეუძლია დაკავშირება 192.168.0.0 ქვექსელში ყოფნისას

თქვენ ასევე შეგიძლიათ უარყოთ წვდომა გარკვეულ მომხმარებლებზე (მაგალითად, მომხმარებლის test2), ამისათვის თქვენ უნდა შეიყვანოთ ქვემოთ

დავიწყოთ

sudo /etc/init.d/ssh დაწყება

ჩვენ დავაკონფიგურირეთ SSH. ახლა მოდით გავხსნათ მასზე წვდომა. ამისათვის ჩვენ გავხსნით წვდომას 2200 პორტზე.

ბოლო ნაწილში დავაინსტალირეთ firewall arno-iptables-firewall ბრძანებით, ახლა ჩვენ უნდა შევიტანოთ ცვლილებები. მოდით ხელახლა კონფიგურაცია.

sudo dpkg-ხელახლა კონფიგურაცია arno-iptables-firewall

დაყენება დაიწყო

შეიყვანეთ პორტი, რომელიც უნდა გაიხსნას. თქვენ ასევე შეგიძლიათ შეიყვანოთ სხვა პორტები ამ ფანჯარაში, თუ მათი გახსნა გჭირდებათ.

შემდეგ ფანჯარაში ჩვენ ასევე შევდივართ პორტი 2200.

პორტებში შესვლის შემდეგ შეგიძლიათ ყველგან დააჭიროთ ENTER-ს და გადატვირთოთ Firewall.

ამის შემდეგ ssh პორტი ხელმისაწვდომი იქნება ქსელიდან

ssh კავშირის უსაფრთხოების გასაზრდელად, შეგიძლიათ დააკონფიგურიროთ denyhosts პროგრამა. პროგრამა არის პითონის სკრიპტი, რომელიც აანალიზებს /var/log/auth.log ფაილს ssh-ის საშუალებით სერვერზე შესვლის არაავტორიზებული მცდელობის ჩანაწერებისთვის და ამატებს IP მისამართებს, საიდანაც ეს მცდელობები განხორციელდა /etc/hosts.deny ფაილში. , რომლითაც არ არის ნებადართული შესვლა ssh-ის საშუალებით.

დააინსტალირეთ ბრძანებით

sudo aptitude ინსტალაციის უარყოფა

ინსტალაციის შემდეგ დაუყოვნებლივ, პროგრამა დაასკანირებს /var/log/auth.log ფაილს და დაამატებს IP მისამართებს, საიდანაც შეგროვდა პაროლები, მისამართზე /etc/hosts.deny. სკანირებას დრო დასჭირდება, თუ უკვე არის ბევრი ასეთი ჩანაწერი /var/log/auth.log ფაილში.

ინსტალაციის შემდეგ თქვენ უნდა შეცვალოთ კონფიგურაციის ფაილი

sudo nano /etc/denyhosts.conf

მოდით დავაყენოთ PURGE_DENY პარამეტრი 3 საათზე. წინააღმდეგ შემთხვევაში, ჩვენ შეგვიძლია დავბლოკოთ წვდომა საკუთარ თავთან, რამდენჯერმე არასწორი პაროლის შეყვანით.

ასევე, კონტროლისთვის, თქვენ უნდა მიუთითოთ ელ.ფოსტის მისამართი სერვერზე წვდომის წარუმატებელი მცდელობის შესახებ შეტყობინებების გასაგზავნად:

ADMIN_EMAIL = [ელფოსტა დაცულია]ნაცვლად [ელფოსტა დაცულია]მიუთითეთ თქვენი ელ.წერილი

იმისათვის, რომ ახალი პარამეტრები ამოქმედდეს, თქვენ უნდა გადატვირთოთ denyhosts სერვისი:

sudo სერვისი უარყოფს ჰოსტების გადატვირთვას

P.S. თუ გჭირდებათ თქვენი ანგარიშის პაროლის შეცვლა. შეიყვანეთ ბრძანება

passwd მომხმარებელი - სადაც მომხმარებელი არის მომხმარებლის სახელი

P.S.S. თუ კოდირების პრობლემა გაქვთ, ჩაწერეთ shh კლიენტის პროგრამის პარამეტრებში

ყველაზე პოპულარული პროგრამა ssh-ზე მუშაობისთვის, PuttY პროგრამა.

ამ სტატიაში ჩვენ გეტყვით, თუ როგორ დააინსტალიროთ SSH Linux-ზე, Windows-ზე და Mac-ზე, როგორ დააკონფიგურიროთ და როგორ გამოიყენოთ იგი! ყველა დეტალი! საინტერესო იქნება!

SSH არის პოპულარული პროტოკოლი ოპერაციული სისტემების დისტანციური მართვისთვის (ადმინისტრირება), რომელიც დაფუძნებულია Linux და Unix ბირთვებზე. Linux-ის დამწყებთათვის, ბოლომდე არ არის გასაგები, როგორ დააინსტალიროთ ეს პროტოკოლი, დააკონფიგურიროთ და გამოიყენოთ იგი, ამიტომ გადავწყვიტეთ დამეწერა ეს სტატია მის გამოსასწორებლად!

Linux-ის ბირთვზე გაშვებული ერთ-ერთი ყველაზე პოპულარული ოპერაციული სისტემა არის Ubuntu, ამიტომ ჩვენ მას გამოვიყენებთ ssh-ის ასახსნელად.

ჯერ ავხსნით ყველა ნაბიჯს Linux-ის მაგალითზე, შემდეგ კი Mac-სა და Windows-ში!

SSH-ის ინსტალაცია Linux OS-ზე

99,99% შემთხვევაში Linux-ს უკვე აქვს დაინსტალირებული ssh კლიენტი, რომლითაც შეგიძლიათ დაუკავშირდეთ დისტანციურ მანქანას. მაგრამ თუ გსურთ დაუკავშირდეთ კომპიუტერს, რომელზეც ამჟამად იმყოფებით ან სხვა რომელიმესთან, თქვენ უნდა "ჩამოტვირთოთ ssh სერვერი".

ამის გაკეთება ძალიან მარტივია, ყველაფერი რაც თქვენ გჭირდებათ უკვე არის საცავებში (a la a პროგრამული უზრუნველყოფის მაღაზია), გახსენით ტერმინალი და შეიყვანეთ ბრძანება:

Sudo apt დააინსტალირე openssh-სერვერი

ანუ აუცილებელია სერვერის ნაწილი, რაც კომპიუტერს წვდომას ხდის ქსელში ssh პროტოკოლის საშუალებით. ჭამე კლიენტის ნაწილი, რომელიც უკვე დაინსტალირებულია თქვენს კომპიუტერში და მისი გამოყენებით თქვენ უკავშირდებით დისტანციურ კომპიუტერს.

კავშირი SSH-ით (პაროლით)

გახსენით ტერმინალი და შეიყვანეთ ბრძანება დისტანციურ მანქანასთან დასაკავშირებლად:

სშ მომხმარებლის სახელი@IP მისამართი

ჯერ ვწერთ ssh-ს, შემდეგ მომხმარებლის სახელს, რომელიც არის დისტანციურ აპარატზე, შემდეგ @ ნიშანი (ძაღლი) და IP მისამართი. აი მაგალითი:

სშ საშა @ 100.08.30.48

როგორც წესი, ssh კავშირი ხდება 22 პორტზე, თუ მას იძულებით შეცვლით, უნდა მიუთითოთ. ამისათვის ჩაწერეთ -p რიცხვი ბოლოს. აი მაგალითი:

სშ საშა @ 100.08.30.48 -გვ 3040

დაკავშირების შემდეგ და თუ ეს იყო პირველი კავშირი მანქანასთან, თქვენ დაგჭირდებათ აპარატის დამატება სანდოებთან - ჩაწერეთ დიახ და დააჭირეთ Enter. ეს კეთდება ერთხელ.

შექმენით SSH გასაღები და დაუკავშირდით პაროლის გარეშე!

იმისათვის, რომ არ დაიმახსოვროთ პაროლი და არ შეიყვანოთ იგი ყოველ ჯერზე, განსაკუთრებით თუ თქვენ გაქვთ ბევრი Linux სერვერი, შეგიძლიათ შექმნათ სპეციალური SSH გასაღები. ეს გასაღები საშუალებას მოგცემთ დაუკავშირდეთ უკვე "ცნობილ" აპარატს "ცნობილ" სერვერთან, პაროლის გამოყენების გარეშე.

როგორ შევქმნათ SSH გასაღები?

ჩვენ შევქმნით გასაღებს კომპიუტერზე, რომელსაც ამჟამად იყენებთ, შემდეგ კი დაგჭირდებათ მისი კოპირება ჩვენს სერვერზე!

შექმენით გასაღები მიმდინარე კომპიუტერისთვის:

Ssh-keygen -t rsa

გასაღები შეიქმნა, ახლა თქვენ უნდა დაამატოთ ის დისტანციურ მანქანაში ან სერვერზე.

როგორ დავამატოთ SSH გასაღები სერვერზე?

ამისათვის შეიყვანეთ ბრძანება:

ssh-copy-id მომხმარებლის სახელი@IP მისამართი

Ssh-copy-id sasha @ 100.08.30.48

ახლა თქვენ გაქვთ შესაძლებლობა დაუკავშირდეთ სერვერს ან სხვა მოწყობილობას გასაღების გამოყენების გარეშე, უბრალოდ თქვენი მომხმარებლის სახელისა და პაროლის შეყვანით!

Windows SSH კლიენტი

Windows-ზე SSH-ის საშუალებით Linux სერვერებთან მუშაობის ერთ-ერთი ყველაზე პოპულარული პროგრამა არის Putty პროგრამა. თქვენ შეგიძლიათ ჩამოტვირთოთ ეს Windows SSH კლიენტი ამ მისამართზე - putty.org.

Windows-ში პაროლით SSH-ით დაკავშირება

SSH-ის საშუალებით Putty-თან დაკავშირება ძალიან მარტივია! შეიყვანეთ IP მისამართი, თუ შეცვალეთ პორტი, მიუთითეთ სხვა პორტი და დააჭირეთ გახსნას;
და დაკავშირების შემდეგ, შესვლა და პაროლი!

დაკავშირება SSH-ის საშუალებით Windows-ის გასაღების გამოყენებით

თუ არ გსურთ პაროლის ყოველ ჯერზე შეყვანა, მაგრამ გამოიყენეთ ssh გასაღები Putty-ში, მაშინ, როგორც Linux-ში, ჯერ უნდა შექმნათ გასაღები და შემდეგ გადაიტანოთ სერვერზე.

შექმენით გასაღები


ჯერ არ დახუროთ პროგრამა და დასაკავშირებლად გაუშვით Putty

გასაღების გადაცემა


Mac SSH კლიენტი

ვინაიდან macOS დაფუძნებულია UNIX სისტემაზე, შეგიძლიათ დაუკავშირდეთ ssh-ის საშუალებით პირდაპირ ტერმინალიდან!

თუ გსურთ არ გამოიყენოთ პაროლი, ჯერ უნდა დააინსტალიროთ Homebrew:

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

ასევე არის მოსახერხებელი mac ssh კლიენტი - Termius.

SSH კლიენტი Android-ისთვის და iOS-ისთვის

ყველაზე მოსახერხებელი SSH კლიენტი iOS და Android-ისთვის არის Termius აპლიკაცია!

ფაილების გადატანა და ჩამოტვირთვა SSH (SCP) საშუალებით

თქვენი ლოკალური აპარატიდან სერვერზე ფაილის ატვირთვისთვის ssh-ის საშუალებით Linux-სა და macOS-ში:

Scp file1.tar root@ip_adress:/home/dir

დააკოპირეთ ფაილი სერვერიდან თქვენს ადგილობრივ Linux ან macOS კომპიუტერში:

Scp userName@ip_adress:/home/file1.tar /var/www/

სერვერიდან სერვერამდე:

Scp user@server_ip1:/home/file.txt user@server_ip2:/home/

Windows-ისთვის

Windows-ზე SSH ფაილების გადასატანად გამოიყენება pscp.

pscp.exe file.zip root@ip_server: /var/www/

SSH-ის დაყენება

თუ თქვენ გჭირდებათ SSH შესვლა პირდაპირ root-ის სახით:

SSH პორტის შეცვლა

ვინაიდან ნაგულისხმევად ssh კონფიგურირებულია პორტ 22-ზე, სერვერის გამოყენება სახიფათო ხდება. ამიტომ, ღირს პორტის შეცვლა!

და შეცვალეთ პორტის მნიშვნელობები საჭიროებზე:

# რა პორტებს, IP-ებს და პროტოკოლებს ვუსმენთ პორტს 22

შესვლა მხოლოდ SSH კლავიშის გამოყენებით:

ნანოს გამოყენებით, შეცვალეთ sshd_config დოკუმენტი, შეიყვანეთ ბრძანება:

Sudo nano /etc/ssh/sshd_config

PasswordAuthentication-ის მნიშვნელობების შეცვლა დიახ-დან არა:

RSAA ავტორიზაცია დიახ PubkeyAuthentication დიახ პაროლიAuthentication არა

კიდევ გაქვთ შეკითხვები? დაწერეთ ისინი კომენტარებში, გვითხარით რა გააკეთეთ ან პირიქით!

ესე იგი! წაიკითხეთ მეტი სასარგებლო სტატიები და ინსტრუქციები განყოფილებაში. დარჩით საიტზე, ეს კიდევ უფრო საინტერესო იქნება!

SSH - (უსაფრთხო Shell) არის პროტოკოლი Linux ოპერაციული სისტემაზე მომუშავე კომპიუტერის დისტანციური მართვისთვის. Ssh ძირითადად გამოიყენება სერვერების დისტანციური მართვისთვის ტერმინალის საშუალებით. თუ თქვენ ხართ რამდენიმე სერვერის ადმინისტრატორი ან თუნდაც მოწინავე ვებმასტერი, მაშინ ალბათ ხშირად აწყდებით ამა თუ იმ კომპიუტერთან მუშაობის აუცილებლობას ssh-ის საშუალებით. Linux-ში, ამისათვის, ssh სერვერი გამოიყენება მანქანაზე, რომელსაც კლიენტი უნდა დაუკავშირდეს და მასზე, საიდანაც ისინი აკავშირებენ.

ამ სახელმძღვანელოში განვიხილავთ, თუ როგორ გამოვიყენოთ ssh, ისევე როგორც მის შესაძლებლობებს, რომელთა შესახებ არც კი იცოდით. სავარაუდოდ, თქვენ უკვე იცით, როგორ დაუკავშირდეთ სერვერს ssh-ის საშუალებით, მაგრამ ამ პროგრამას აქვს მრავალი სხვა შესაძლებლობა, როგორიცაა ssh ფაილების გადაცემა, პაროლის გარეშე დაკავშირება ან დისტანციურ სერვერზე სკრიპტის შესრულება. ამ ყველაფერს მოგვიანებით განვიხილავთ სტატიაში.

მაგრამ დავიწყოთ ძალიან საფუძვლებით.

ბრძანების სინტაქსი ასეთია:

$ssh [პარამეტრები] მომხმარებლის სახელი@სერვერი [ბრძანება]

მნიშვნელოვანია აღინიშნოს, რომ ssh-ს შეუძლია იმუშაოს პროტოკოლის ორი ვერსიის გამოყენებით. ვერსიები 1 და 2. ნათელია, რომ ვერსია 2 უკეთესია და მხარს უჭერს დაშიფვრის და ავტორიზაციის უფრო მეტ ტიპს. ამ სტატიაში ჩვენ აღარ ვისაუბრებთ პროტოკოლის განსხვავებებზე და ვივარაუდებ, რომ თქვენ იყენებთ 2 ვერსიას.

SSH ბრძანების პარამეტრები

ახლა მოდით შევხედოთ ssh ბრძანების ყველაზე ძირითად ვარიანტებს:

  • - ჩადეთ ssh ფონურ რეჟიმში
  • - მიეცით დისტანციურ მანქანებს ადგილობრივ პორტებზე წვდომის უფლება
  • - მომხმარებლის სახელი სისტემაში
  • - სტანდარტული გამომავალი გადამისამართება /dev/null-ზე
  • გვ- ssh პორტი დისტანციურ მანქანაზე
  • - არ აჩვენო შეცდომის შეტყობინებები
  • - გამართვის რეჟიმი
  • x- გამორთეთ X11 გადამისამართება
  • X- ჩართეთ X11 გადამისამართება
  • C- შეკუმშვის ჩართვა

ეს არ არის ყველა კომუნალური ვარიანტი, დანარჩენი სცილდება ამ სტატიის ფარგლებს. ssh ოპერაციების მრავალი პარამეტრი შეიძლება შეიცვალოს კონფიგურაციის ფაილის ~/.ssh/config-ის მეშვეობით, მაგრამ ჩვენ არც აქ განვიხილავთ ამას დეტალურად.

SSH სერვერის დაყენება

SSH სერვერის პარამეტრები განლაგებულია /etc/ssh/sshd_config. ჩვენ არც ბევრ მათგანს შევეხებით. განვიხილოთ მხოლოდ ყველაზე საინტერესო. ჯერ გახსენით /etc/ssh/sshd.conf ფაილი

ssh პორტი

ნაგულისხმევად, ssh მუშაობს 22-ე პორტზე. მაგრამ ეს ქცევა სახიფათოა, რადგან თავდამსხმელმა იცის ეს პორტი და შეუძლია შეასრულოს Bruteforce შეტევა პაროლის უხეში ძალით. პორტი მითითებულია ხაზით:

შეცვალეთ პორტის მნიშვნელობა სასურველზე.

SSH პროტოკოლი

ნაგულისხმევად, ssh სერვერს შეუძლია იმუშაოს პროტოკოლის ორ ვერსიაზე თავსებადობისთვის. პროტოკოლის მხოლოდ მეორე ვერსიის გამოსაყენებლად, გააუქმეთ ხაზი:

და მიიტანეთ იგი ამ ფორმაში:

მარშრუტზე წვდომა

ნაგულისხმევად, Root წვდომა ssh-ის საშუალებით დაშვებულია, მაგრამ ეს ქცევა ძალიან სახიფათოა, ამიტომ გააუქმეთ ხაზი:

PermitRootLogin no

მხოლოდ კონკრეტულ მომხმარებელს შეუძლია SSH წვდომა

ჩვენ შეგვიძლია დავუშვათ ssh წვდომა მხოლოდ კონკრეტული მომხმარებლის ან ჯგუფისთვის. ამისათვის დაამატეთ ხაზები:

AllowUsers User1, User2, User3
AllowGroups Group1, Group2, Group3

აქ User1 და Group1 არის მომხმარებელი და ჯგუფი, რომლებზეც წვდომა უნდა იყოს დაშვებული.

გაშვებული X11 აპლიკაციები

ყველამ არ იცის, მაგრამ შესაძლებელია ssh-ის გამოყენება სრულფასოვანი X11 აპლიკაციების გასაშვებად. ამაზე ქვემოთ ვისაუბრებთ, მაგრამ იმისათვის, რომ ყველაფერი იმუშაოს, თქვენ უნდა ჩართოთ ეს ფუნქცია სერვერის მხარეს, დაამატეთ შემდეგი ხაზი:

X11 გადამისამართება დიახ

ჩვენ განვიხილეთ ძირითადი პარამეტრები, სანამ გადავიდეთ, არ დაგავიწყდეთ გადატვირთოთ ssh სერვერი ცვლილებების შესანახად:

სერვისის sshd გადატვირთვა

SSH გამოყენებით

ამ სტატიის მთავარი მიზანია აჩვენოს ssh-ის გამოყენების საინტერესო და სასარგებლო გზები, რომლებიც შესაძლოა არ იცოდით. მოდით გადავიდეთ საუკეთესო ნაწილზე - ssh შესაძლებლობები.

სერვერთან დაკავშირება

უბრალოდ სერვერთან SSH-ის საშუალებით დასაკავშირებლად გამოიყენეთ შემდეგი ბრძანება:

გაუშვით ბრძანება

ჩვენ მიჩვეული ვართ დისტანციურ სერვერთან დაკავშირებას და მხოლოდ ამის შემდეგ შევასრულებთ საჭირო ბრძანებებს, მაგრამ სინამდვილეში, ssh პროგრამა საშუალებას გაძლევთ დაუყოვნებლივ შეასრულოთ სასურველი ბრძანება დისტანციური აპარატის ტერმინალის გახსნის გარეშე. მაგალითად:

ssh user@host ls

შეასრულეთ ls ბრძანება დისტანციურ სერვერზე და დააბრუნეთ მისი გამომავალი მიმდინარე ტერმინალში.

შეასრულეთ ადგილობრივი სკრიპტი

მოდით გავუშვათ bash თარჯიმანი დისტანციურ სერვერზე და გადავცეთ მას ჩვენი ადგილობრივი სკრიპტი Bash შეყვანის გადამისამართების გამოყენებით:

ssh user@host "bash -s"< script.sh

სარეზერვო ასლი დისტანციურ სერვერზე და აღდგენა

ჩვენ შეგვიძლია შევინახოთ დისკის სარეზერვო ასლი პირდაპირ დისტანციურ სერვერზე ssh-ის გამოყენებით. მოდით გადავიტანოთ dd-ის გამომავალი გადამისამართების ოპერატორის გამოყენებით |, შემდეგ შევინახოთ ის ამ მხარეს ფაილში:

sudo dd if=/dev/sda | ssh user@host "dd of=sda.img"

ახლა, თქვენ მიერ შექმნილი ასლიდან დისკის მდგომარეობის აღსადგენად, გაუშვით:

ssh user@host "dd if=sda.img" | dd of=/dev/sda

აქ და ზემოთ /dev/sda არის თქვენი მყარი დისკის ფაილის სახელი.

ავტორიზაცია პაროლის გარეშე

სერვერზე შესასვლელად ssh პაროლის გამოყენება არა მხოლოდ მოუხერხებელია, არამედ სახიფათოა, რადგან ამ პაროლის გამოცნობა ნებისმიერ დროს შეიძლება. ყველაზე უსაფრთხო და ხშირად გამოყენებული ავთენტიფიკაციის მეთოდი არის RSA გასაღების წყვილის გამოყენება. პირადი გასაღები ინახება კომპიუტერში, ხოლო საჯარო გასაღები გამოიყენება სერვერზე მომხმარებლის იდენტიფიცირებისთვის.

ამ ქცევის კონფიგურაცია ძალიან მარტივია. ჯერ შექმენით გასაღები ბრძანებით:

ssh-keygen -t rsa

გასაღების შექმნისას მოგიწევთ უპასუხოთ რამდენიმე კითხვას, თუ გსურთ პაროლის გარეშე დაკავშირება, დატოვეთ Passphare ველიც;

შემდეგ ჩვენ ვუგზავნით გასაღების სერვერს:

ssh-copy-id -i ~/.ssh/id_rsa.pub user@host

მიიღეთ პაროლი ლოკალური ფაილიდან

შეგახსენებთ, რომ პაროლების შენახვა უბრალო ტექსტურ ფაილებში არ არის უსაფრთხო, მაგრამ თუ გსურთ, მაშინ დიახ, შესაძლებელია. ამისათვის გამოიყენეთ Bash-ის შეყვანის გადამისამართების ოპერატორი:

ssh user@host< local_file.txt

SSH მისალმების შეცვლა

ssh-ით შესვლისას შეიძლება გამოჩნდეს მისალმება, მისი შეცვლა ძალიან მარტივია. ამაზე პასუხისმგებელია ფაილი /etc/issue. უბრალოდ გახსენით ეს ფაილი და შეიყვანეთ სასურველი ტექსტი:

SSH შესვლის წარუმატებელი მცდელობების ნახვა

გსურთ ნახოთ, იყო თუ არა წარუმატებელი მცდელობები თქვენს სერვერზე წვდომის ssh-ის საშუალებით და რომელი IP მისამართებიდან? უბრალოდ, ყველა მოთხოვნა შეტანილია ფაილში /var/log/secure, მოდით გავფილტროთ მხოლოდ საჭირო მონაცემები ბრძანებით:

კატა /var/log/secure | grep "პაროლი ვერ მოხერხდა"

ფაილების გადატანა SSH-ის საშუალებით

ბრძანებების შესრულების გარდა, შეგიძლიათ ფაილების კოპირება ssh-ის საშუალებით. ამისთვის გამოიყენება scp უტილიტა. უბრალოდ მიუთითეთ ფაილი, რომლის გადატანა გსურთ, დისტანციური სერვერი და საქაღალდე სერვერზე, აქ:

$scp /მისამართი/ლოკალური/ფაილი user@host:მისამართი/საქაღალდეები

მაგალითად:

scp ~/test.txt user@host:documents

გარდა scp უტილიტასა, ssh ფაილების გადაცემა შეიძლება უფრო ჭკვიანურად მოხდეს. მოდით წავიკითხოთ ფაილი და გამოვიყენოთ cat მის გადასაცემად და შემდეგ შევინახოთ ნაკადი ფაილში:

კატა ლოკალური ფაილი | ssh user@host "cat > დისტანციური ფაილი"

ssh user@host "cat > დისტანციური ფაილი"< localfile

tar czf - /სახლი/მომხმარებელი/ფაილი | ssh user@host tar -xvzf -C /სახლი/დისტანციური მომხმარებელი/

ssh ფაილების ამ გზით კოპირება საშუალებას გაძლევთ ერთდროულად გაგზავნოთ მთელი საქაღალდეები.

გრაფიკული აპლიკაციების გაშვება ssh-ზე

თუ თქვენ გჭირდებათ ამა თუ იმ გრაფიკული აპლიკაციის გაშვება დისტანციურ მანქანაზე, ამისათვის არ არის აუცილებელი VNC-ის გამოყენება, შეგიძლიათ გაუმკლავდეთ ssh-ის შესაძლებლობებს. პროგრამა შესრულდება სერვერის მხარეს და თქვენ მხოლოდ ფანჯარა გამოჩნდება, რათა შეასრულოთ ყველაფერი, რაც გჭირდებათ. უფრო მეტიც, ყველა მონაცემი დაშიფრულია. იმისათვის, რომ ამ ფუნქციამ იმუშაოს, თქვენ უნდა ჩართოთ ის სერვერის მხარეს.

შემდეგ ჩვენ უბრალოდ ვასრულებთ ბრძანებას დისტანციურ სერვერზე გრაფიკული აპლიკაციის გასაშვებად ასე:

ssh -XC user@remotehost "clipse"

როგორც უკვე ნახეთ, X ვარიანტი საშუალებას იძლევა X11 გადამისამართება კლიენტის მხარეს, ხოლო ვარიანტი C იძლევა მონაცემთა შეკუმშვას.

ssh სესიის დასრულება

თუ თქვენ იყენებდით ssh არასტაბილურ ინტერნეტს, როცა კავშირი დროდადრო წყდება, მაშინ ალბათ დაიღალეთ ტერმინალის დახურვით, რადგან წინააღმდეგ შემთხვევაში, ერთი შეხედვით, სესიის შეწყვეტის საშუალება არ არის. როდესაც დისტანციურ სერვერთან კავშირი გატეხილია, თქვენ ვერ შეძლებთ რაიმე ბრძანების შეყვანას და Ctrl+C, Ctrl+Z, Ctrl+D კლავიშების კომბინაციები არ მუშაობს. და ისინი არ იმუშავებენ, რადგან კლიენტი ცდილობს ამ ბრძანებების სერვერზე გაგზავნას. მაგრამ არსებობს გამოსავალი - Escape sequences. მათი მხარდაჭერის გასააქტიურებლად, დაამატეთ ხაზი:

ფაილზე /etc/ssh/ssh_config

" თქვენ ხართ დამწყები ადმინი და გსურთ, მაგალითად, დააყენოთ თქვენი ვებ სერვერი. გადადით ინტერნეტში, იპოვეთ თქვენთვის შესაფერისი სტატია და განაგრძეთ! ყურადღება მივაქციოთ ერთ მნიშვნელოვან პუნქტს: თითქმის ყველა ამ სტატიაში მოცემულია მინიმალური ბრძანებები საჭირო სერვისების დასაწყებად. კარგი - იმუშავა! გააკეთე ყველაფერი იმისთვის, რომ არ შეწყვიტოს მუშაობა? იყენებთ SSH-ს ინტერნეტით? რატომ არ ხაზს უსვამს ვინმე თავის სტატიებში იმ პრობლემებს, რომლებიც ახლად შექმნილ ადმინისტრატორებს შეუძლიათ სერვერის დაყენების ამ მიდგომით, რადგან სტატიები დაწერილია სპეციალურად დამწყებთათვის. იმისათვის, რომ დროულად მიაქციოთ ყურადღება უსაფრთხოების საკითხს, ჩემს სტატიებში აუცილებლად გავაკეთებ შენიშვნებს და ბმულებს ამ მასალაზე. გაფრთხილებული - წინამორბედი!"

ასე რომ, SSH (უსაფრთხო გარსი) არის უსაფრთხო ტერმინალის სერვერი, რომელიც უზრუნველყოფს სისტემაში დისტანციურ წვდომას. უსაფრთხო, რადგან კლიენტსა და სერვერს შორის მთელი ტრაფიკი დაშიფრულია. უსაფრთხოა ნაგულისხმევი პარამეტრებით? თუ თქვენ გაქვთ სერვერი SSH-ის საშუალებით ინტერნეტის საშუალებით დაკავშირების შესაძლებლობით, აუცილებლად იქნებიან ადამიანები, რომლებსაც შესვლისთვის პაროლის არჩევა სურთ. ვფიქრობ, არ არის საჭირო იმის ახსნა, რომ შესაძლო თავდამსხმელი შეძლებს სისტემაში თითქმის შეუზღუდავი წვდომის მოპოვებას.

ყველა თანამედროვე Ubuntu დისტრიბუციაში, დეველოპერები ცდილობენ გაზარდონ უსაფრთხოების დონე სტანდარტული პარამეტრებით, მაგრამ ეს ყოველთვის არ არის საკმარისი და ზოგჯერ ჩვენ თვითონ ვირჩევთ არასწორ კონცეფციას და ვუშვებთ შეცდომებს.

SSH სერვერის ინსტალაცია Ubuntu-ში.

SSH სერვერის ინსტალაცია Ubuntu-ში ხდება შემდეგი ბრძანებით:

Sudo apt-get დააინსტალირე ssh openssh-სერვერი

ინსტალაციის შემდეგ, SSH სერვერი ავტომატურად დარეგისტრირდება გაშვებისას. თქვენ შეგიძლიათ აკონტროლოთ მისი დაწყება, გაჩერება ან გადატვირთვა ბრძანებების გამოყენებით:

სუდო სერვისი ssh stop | დაწყება | გადატვირთვა

SSH-ის მთავარი კონფიგურაციის ფაილი - სერვერი - ფაილი /etc/ssh/sshd_config, იკითხება ან რედაქტირებადია მხოლოდ სუპერ მომხმარებლის მიერ (root). ცვლილებების გამოსაყენებლად, თქვენ უნდა გადატვირთოთ ssh სერვერი.

SSH სერვერის უსაფრთხოების პარამეტრები.

ნაგულისხმევი პროტოკოლი.

ისევ და ისევ, თანამედროვე დისტრიბუციები ახორციელებენ SSH2 პროტოკოლს ნაგულისხმევად. თუ თქვენს შემთხვევაში მსგავსი რამ:

პროტოკოლი 2.1

თქვენ მხოლოდ 2 უნდა დატოვოთ:

პროტოკოლი 2

არასაიმედო SSH1 პროტოკოლის გამოყენება არ არის რეკომენდებული.

ნაგულისხმევად, Ubuntu-ს ბოლო გამოშვებებში, root მომხმარებლის წვდომა SSH-ის საშუალებით შეზღუდულია.

PermitRootLogin პაროლის გარეშე

PermitRootLogin no

ამ პარამეტრებით, root მომხმარებელი ვერ შეძლებს SSH-ით შესვლას.

ეს ვარიანტი ასევე მოსახერხებელი იქნება, თუ რამდენიმე ადმინისტრატორი მუშაობს სერვერთან სუპერ მომხმარებლის ანგარიშის ქვეშ. ადმინისტრატორები შევლენ თავიანთ ანგარიშში და მხოლოდ ამის შემდეგ მიიღებენ root პრივილეგიებს, ეს ბევრად გააადვილებს სერვერის აუდიტს და ადმინისტრატორების მიერ შესრულებულ მოქმედებებს.

ცოტა მეტი Ubuntu-ში root-ის შესახებ, ნაგულისხმევად შექმნილ მომხმარებელს (სისტემის ინსტალაციის დროს) შეუძლია შეასრულოს ყველა ადმინისტრაციული დავალება sudo-ს საშუალებით. Root მომხმარებლის გააქტიურება სისტემაში წვდომისთვის, მეჩვენება, რომ არაგონივრული გადაწყვეტილებაა.

მიეცით წვდომა მხოლოდ მითითებულ მომხმარებლებს ან ჯგუფებს.

წარმოვიდგინოთ, რომ თქვენს სერვერზე არის მომხმარებლის გარკვეული რაოდენობა, მაგრამ თქვენ მხოლოდ უნდა მიაწოდოთ წვდომა SSH-ის საშუალებით ზოგიერთს. მოდით შევზღუდოთ მომხმარებელთა წრე, რომლებსაც აქვთ წვდომა:

AllowUsers user1 user2

თქვენ ასევე შეგიძლიათ მიუთითოთ საჭირო ჯგუფი, მაგალითად, ადმინისტრატორები:

AllowGroups-ის ადმინისტრატორები

უარყოთ წვდომა "ცარიელი" პაროლებით.

თქვენ პირდაპირ უნდა აკრძალოთ დისტანციური წვდომა ცარიელი პაროლების გამოყენებით:

PermitEmptyPasswords no

ნაგულისხმევი პორტის შეცვლა.

SSH სტანდარტულად მუშაობს 22-ე პორტზე. შესაბამისად, თავდასხმების უმეტესი ნაწილი მიმართული იქნება კონკრეტულად ამ პორტზე, შემდეგ მომხმარებლის სახელისა და პაროლის შერჩევის გამოყენებით, მცდელობები იქნება სერვერზე წვდომის მოპოვება. ჩვენ უკვე გამოვრიცხეთ ყველაზე ცნობილი მომხმარებლის სახელი შესაძლო თავდამსხმელის ბაზიდან (root) და დავუშვით წვდომა მხოლოდ გარკვეულ მომხმარებლებს, ახლა ჩვენ შევამცირებთ შესაძლო შეტევების რაოდენობას (ბოტები, რომლებიც ეძებენ დაუცველობას სტანდარტულ პორტებზე) ნაგულისხმევი პორტის შეცვლით ( ახალი პორტი უნდა იყოს უფასო!).

მოდით შევცვალოთ, მაგალითად:

პორტი 2220

გასათვალისწინებელია, რომ პორტის შეცვლა არანაირად არ გამოგადგებათ მიზანმიმართული უხეში შეტევის დროს (პაროლის გამოცნობა). თავდამსხმელს შეუძლია, მაგალითად, გაუშვას პორტის სკანერი IP მისამართზე, სადაც მდებარეობს თქვენი სერვერი, რის შედეგადაც ის მიიღებს ყველა ღია პორტის ჩამონათვალს.

ასევე გახსოვდეთ, რომ ახლა სერვერთან დასაკავშირებლად, IP მისამართის გარდა, თქვენ უნდა მიუთითოთ პორტის ნომერი.

უხეში ძალის დაცვისთვის ნამდვილად მოქმედი ვარიანტია SSH2 ავთენტიფიკაციისთვის RSA კლავიშების გამოყენება. ამ მეთოდით მომხმარებელი აგენერირებს გასაღებების წყვილს, რომელთაგან ერთი გასაღები არის პირადი, მეორე კი საჯარო. საჯარო გასაღები განთავსებულია სერვერზე და გამოიყენება მომხმარებლის ვინაობის დასადასტურებლად. გარდა ამისა, გასაღები-საჯარო გასაღების კომბინაცია შეიძლება იყოს დაცული საიდუმლო ფრაზით, რაც გაზრდის ავტორიზაციის კრიპტოგრაფიულ ძალას. ლოგიკა მარტივია, თუ არ იყენებთ პაროლს ავტორიზაციისთვის, გამოსაცნობი არაფერია!

ჩვენ შევდივართ სისტემაში მომხმარებლის ქვეშ, ვისთვისაც დავაკონფიგურირებთ SSH წვდომას სერვერზე.

მოდით შევქმნათ RSA გასაღები 4096 სიგრძით. თქვენ მოგეთხოვებათ მიუთითოთ შენახვის ადგილი, დატოვოთ იგი ნაგულისხმევად (/home/UserName/.ssh/id_rsa), ასევე მოგთხოვთ დააყენოთ პაროლი შექმნილი გასაღებისთვის. . თუ არ მიუთითებთ პაროლს, მაშინ არ მოგიწევთ მისი შეყვანა სერვერზე სერთიფიკატის გამოყენებით ავთენტიფიკაციის დროს. გირჩევთ, მიუთითოთ პაროლი:

Ssh-keygen -t rsa -b 4096

წყვილი გასაღებები შეიქმნება მითითებულ დირექტორიაში:

id_rsa.pub- საჯარო

id_rsa- პირადი

მოდით შევამოწმოთ შექმნილია თუ არა ფაილები:

Cd ~/.ssh ls -al

დააყენეთ ნებართვები საქაღალდეზე და ფაილებზე:

Sudo chmod 0700 ~/.ssh/ sudo chmod 0600 ~/.ssh/id*

პირადი გასაღები უნდა გადაეცეს კლიენტს უსაფრთხოდ და ამოღებულ იქნას სერვერიდან გასაღებების კომპრომეტირების თავიდან ასაცილებლად.

id_rsa გასაღები გადაეცემა კლიენტს:

/home/UserName/.ssh/id_rsa

რის შემდეგაც ის წაიშლება სერვერიდან:

Sudo rm /home/UserName/.ssh/id_rsa

მოდით შევქმნათ authorized_keys ფაილი (ჩვენ ვართ სისტემაში იმავე მომხმარებლის „UserName“-ს ქვეშ, რომლისთვისაც შეიქმნა სერტიფიკატი) და დააკოპირეთ ფაილის შინაარსი მასში. id_rsa.pub, მოდით განვსაზღვროთ მფლობელი და დავაყენოთ უფლებები დირექტორიასა და ფაილზე.

Cd ~/.ssh sudo touch authorized_keys sudo chown მომხმარებლის სახელი:UserName authorized_keys sudo cat id_rsa.pub >> autorized_keys sudo chmod 0700 ~/.ssh/ sudo chmod 0600 ~/.ssh/authorized_keys

მოდით შევამოწმოთ, რომ ტექსტი დაკოპირებულია:

სუდო კატა /home/UserName/.ssh/authorized_keys

თუ ტექსტი წარმატებით დაკოპირებულია, შეგიძლიათ წაშალოთ საჯარო გასაღები:

Sudo rm /home/UserName/.ssh/id_rsa.pub

Sudo nano /etc/ssh/sshd_config

თქვენ უნდა გააუქმოთ ხაზები და დააყენოთ პარამეტრები შემდეგნაირად:

# დაუშვით ავტორიზაცია გასაღებების გამოყენებით PubkeyAuthentication yes # ბილიკი, სადაც განთავსდება გასაღებები, რომლითაც შეგიძლიათ დააკავშიროთ თითოეული მომხმარებლის საკუთარი ფაილი მის დირექტორიაში. AuthorizedKeysFile %h/.ssh/authorized_keys

მოდით გადატვირთოთ SSH სერვერი:

Sudo სერვისის ssh გადატვირთვა

მას შემდეგ რაც შექმნით სერთიფიკატებს ყველა მომხმარებლისთვის (ვისაც სჭირდება SSH წვდომა), გირჩევთ, გამორთოთ პაროლის ავტორიზაცია იმავე ფაილის რედაქტირებით. /etc/ssh/sshd_config

ყურადღება, პაროლის ავთენტიფიკაციის გამორთვამდე დარწმუნდით, რომ შეგიძლიათ წვდომა გასაღებზე

პაროლი ავთენტიფიკაციის ნომერი SSH სერვერთან დაკავშირება PuTTY-ის საშუალებით სერთიფიკატის გამოყენებით.

პირველ რიგში, თქვენ უნდა დააკონვერტიროთ პირადი გასაღები (UserName მომხმარებლის გასაღები), რომელიც ადრე ავიღეთ სერვერიდან.

ამისთვის გვჭირდება PuTTYgen პროგრამა.

ატვირთეთ პირადი გასაღების ფაილი " კონვერტაციები - გასაღების იმპორტი".

თუ დაყენებული გაქვთ, შეიყვანეთ პაროლი.

აირჩიეთ " შეინახეთ პირადი გასაღებიდა შეინახეთ მიღებული ppk ფაილი. ის უნდა იყოს შენახული ისეთ ადგილას, სადაც არ შეიძლება იყოს კომპრომეტირებული.

გახსენით PuTTY პროგრამა და დააკონფიგურირეთ კავშირი:

სესია - ჰოსტის სახელი (ან IP მისამართი)ჰოსტის IP მისამართი, რომელზეც კონფიგურირებული იყო SSH სერვერი;

სესია - პორტი SSH სერვერის პარამეტრებში მითითებული პორტი;

სესია - შენახულია სესიასესიის (დაკავშირების) დასახელება;

კავშირი - მონაცემები - ავტოლოგის მომხმარებლის სახელიმომხმარებლის სახელი;

კავშირი - SSH - Auth - პირადი გასაღების ფაილი ავთენტიფიკაციისთვისგზა ppk ფაილამდე;

სესია - შენახვასესიის შენახვა;

სესია - შენახული სესია(აირჩიეთ ჩვენი სესია) - ჩატვირთვა - გახსენით- სხდომა უნდა დაიწყოს;

შეიყვანეთ პაროლი და დააჭირეთ Enter, რის შემდეგაც ჩვენ შევდივართ სისტემაში.

თუ მომხმარებლის სერთიფიკატი დაზიანებულია, ჩვენ ვაუქმებთ სერთიფიკატს და უარვყოფთ მომხმარებელს წვდომას.

იმისათვის, რომ დავბლოკოთ UserName-ის წვდომა ჰოსტზე სერთიფიკატის გამოყენებით, მოდით გადავიდეთ საქაღალდეში, სადაც ინახება მისი სერთიფიკატი:

Cd ~/.ssh

წაშალეთ მისი საჯარო სერტიფიკატის ფაილი ავტორიზებული_გასაღები OpenSSH სერვერიდან, თუ დაუდევრად არ წაშალეთ ფაილები id_rsa.pubდა id_rsa, წაშალე ისინი. ჩვენ ვუყურებთ დირექტორიაში შიგთავსს "ls" ბრძანების გამოყენებით.

ჩვენ ვშლით საჭირო ფაილებს:

Sudo rm authorized_key id_rsa.pub id_rsa

ასევე კარგი პრაქტიკაა ავტორიზაციისთვის მონაცემების შეყვანის დროის შეზღუდვა, ასევე უმოქმედობის შემთხვევაში დროის შეზღუდვა.

ქვემოთ მოცემულ მაგალითში ეს დრო შემოიფარგლება 30 წამით:

შესვლაGraceTime 30

დრო ამოიწურა, როდესაც კავშირის აქტივობა არ არის.

ავტომატურად წყვეტს კავშირს გარკვეული დროის შემდეგ, რომლის დროსაც უმოქმედობა ჩაიწერება კონსოლში.

ClientAliveCountMax –პარამეტრი მიუთითებს ssh სერვერის მიერ გაგზავნილი შეტყობინებების საერთო რაოდენობას ssh კლიენტის აქტივობის გამოსავლენად. ნაგულისხმევი არის 3.

ClientAliveInterval– პარამეტრი მიუთითებს ლოდინის დროს წამებში. ვადის გასვლის შემდეგ, ssh სერვერი გაუგზავნის მოთხოვნის შეტყობინებას კლიენტს. ამ პარამეტრის ნაგულისხმევი მნიშვნელობა არის 0. სერვერი არ აგზავნის შეტყობინებას გადამოწმებისთვის.

ssh კლიენტის ავტომატურად გამორთვა 5 წუთის შემდეგ (300 წამი):

ClientAliveInterval 300 ClientAliveCountMax 0

ეს სტატია მონიშნულია დაუმთავრებლად. იხილეთ შენიშვნა სტატიის ბოლოს.

ეს სტატია ეძღვნება Ubuntu-ში უსაფრთხო ტერმინალის (უსაფრთხო გარსი) კლიენტსა და სერვერს, მათ კონფიგურაციას და გამოყენებას. SSH არის სპეციალური ქსელის პროტოკოლი, რომელიც საშუალებას გაძლევთ მიიღოთ დისტანციური წვდომა კომპიუტერთან კავშირის უსაფრთხოების მაღალი ხარისხით. შეგიძლიათ მეტი წაიკითხოთ ssh პროტოკოლის შესახებ.

ოპერაციული პრინციპების აღწერა და გამოყენებული აპლიკაციები

ძირითადად, SSH დანერგილია ორი აპლიკაციის სახით - SSH სერვერი და SSH კლიენტი იყენებს SSH კლიენტისა და სერვერის უფასო განხორციელებას - OpenSSH. დაკავშირებისას კლიენტი გადის ავტორიზაციის პროცედურას სერვერთან და მათ შორის მყარდება დაშიფრული კავშირი. OpenSSH სერვერს შეუძლია იმუშაოს როგორც ssh1, ასევე ssh2 პროტოკოლებთან. ssh1 პროტოკოლი ამჟამად განიხილება დაუცველად და მისი გამოყენება ძალიან აკრძალულია. მე განზრახ გამოვტოვებ პროტოკოლის სხვადასხვა ტექნიკურ დეტალებს, რადგან ამ სახელმძღვანელოს მთავარი მიზანი მისი კონფიგურაციისა და გამოყენების აღწერაა. ინტერნეტში ბევრი სტატიაა თავად პროტოკოლის, მისი მუშაობის პრინციპების, დაშიფვრის ალგორითმების და ა.შ., მაგალითად, შეგიძლიათ დეტალურად წაიკითხოთ ამის შესახებ.

ინსტალაცია

დააინსტალირეთ OpenSSHშეგიძლიათ გამოიყენოთ ბრძანება ტერმინალიდან:

sudo apt-get install ssh

ssh მეტაპაკეტი შეიცავს როგორც კლიენტს, ასევე სერვერს, მაგრამ ეს, სავარაუდოდ, დააინსტალირებს მხოლოდ სერვერს, რადგან კლიენტი უკვე შედის Ubuntu-ში ნაგულისხმევად.

სერვერის დაყენება

ინსტალაციისას SSH სერვერი ავტომატურად ემატება გაშვებას. თქვენ შეგიძლიათ აკონტროლოთ მისი დაწყება, გაჩერება ან გადატვირთვა ბრძანებების გამოყენებით:

სუდო სერვისი ssh stop| დაწყება| გადატვირთვა

SSH სერვერის ძირითადი კონფიგურაციის ფაილი არის /etc/ssh/sshd_config ფაილი, რომლის წაკითხვა ან რედაქტირება შესაძლებელია მხოლოდ სუპერმომხმარებლის მიერ. ამ ფაილის ყოველი ცვლილების შემდეგ, თქვენ უნდა გადატვირთოთ ssh სერვერი ასეთი ცვლილებების გამოსაყენებლად.

ნაგულისხმევი SSH სერვერის კონფიგურაციის მაგალითი Ubuntu-ში:

# Open-ssh სერვერის კონფიგურაციის მაგალითი რუსული # # კომენტარებით..2010. # # # # # # კონვენციები: # # "ნაგულისხმევად" ვგულისხმობთ sshd-ის ქცევას, როდესაც # # დირექტივა ცალსახად არ არის მითითებული. აღსანიშნავია, რომ Ubuntu # #-ში sshd_config ფაილი უკვე შეიცავს რამდენიმე პარამეტრს, რომლებიც # # არის ნაგულისხმევი პარამეტრები კონკრეტულად Ubuntu-სთვის. # # ასეთი პარამეტრები მითითებულია ამ ფაილში. ############################################### ############# ################ მისამართი/პორტის პარამეტრები და ა.შ. ############################################### ########################### პორტი ##################### ### ############################ # # # პორტი გამოყენებული. შეგიძლიათ მიუთითოთ რამდენიმე, მაგალითად: # # პორტი 22 # # პორტი 23 # # პორტი 24 # # რეკომენდირებულია გამოიყენოთ არასტანდარტული პორტი, რადგან # # სტანდარტი ხშირად სკანირებულია ბოტების მიერ პოტენციური # # ხვრელებისთვის. შეიძლება გამოტოვდეს, თუ მითითებულია # # მისამართის მეშვეობით. იხილეთ ასევე ListenAddress პარამეტრი. # # # პორტი 22 # # ## მოსმენა მისამართი ############################################################# ### # # # ქსელის მისამართი, რომელზეც სერვერი უსმენს. მისამართი შეიძლება # # დაიწეროს ასე: # # ListenAddress ჰოსტი|IPv4_addr|IPv6_addr # # ListenAddress ჰოსტი|IPv4_addr:port # # ListenAddress :port # # თუ არ არის მითითებული პორტი, sshd მოუსმენს ამ მისამართს და # #-ს პორტი მითითებულია პარამეტრში Port. თუ თქვენ # # გამოიყენებთ ListenAddress-ს პორტის მითითების გარეშე, მაშინ # # Port ვარიანტი წინ უნდა უსწრებდეს ListenAddress პარამეტრს. თუ არ არის მითითებული # #, მაშინ ნაგულისხმევად უსმენს ყველა ადგილობრივ # # მისამართს. შეგიძლიათ მიუთითოთ მრავალი მისამართი. # # # ## მისამართიოჯახი ############################################################## # # # განსაზღვრავს, რომელი IP მისამართების ოჯახი უნდა იყოს # # გამოყენებული sshd-ის მიერ. შესაძლო ვარიანტები: # # "ნებისმიერი" - ნებისმიერი # # "inet" (მხოლოდ IPv4) # # "inet6" (მხოლოდ IPv6) # # ნაგულისხმევი - "ნებისმიერი". # AddressFamily inet # # ## UseDNS ################################################################ ######### # # # განსაზღვრავს, უნდა შეამოწმოს თუ არა sshd ჰოსტის სახელი და # # გამოიყენოს ეს ჰოსტის სახელი კლიენტის მიერ გაგზავნილი IP მისამართის შესამოწმებლად DNS-დან მიღებული # #-ის წინააღმდეგ. # # ნაგულისხმევი მნიშვნელობა არის "დიახ". ############################################### ############# ############# მომხმარებლის წვდომის პარამეტრები ##################### ################################################ ### # # # მომხმარებლის დაშვება/არ დაშვება განისაზღვრება # # DenyUsers, AllowUsers, DenyGroups და AllowGroups დირექტივებით. # # ამ შემთხვევაში, შემოწმება მიდის ზემოდან ქვემოდან ჯაჭვის გასწვრივ: # # ## DenyUsers ## # # || # # ## ნება მომხმარებელთა ## # # || # # ## DenyGroups ## # # || # # ## AllowGroups ## # # მიიღება მხოლოდ მომხმარებლის და ჯგუფის სახელები, რიცხვითი # # იდენტიფიკატორები (UserID) არ არის აღიარებული. რიგრიგობით გაასწორეთ რამდენიმე მომხმარებლის/ჯგუფის # # ჩანაწერი, გამოყოფილი # # ინტერვალით. თუ იწერება სახით user@host, მაშინ # # მომხმარებელი და ჰოსტი მოწმდება ცალ-ცალკე, ეს საშუალებას აძლევს # # შეზღუდოს წვდომა გარკვეულ მომხმარებლებზე # # გარკვეული ჰოსტებიდან. უნდა გვახსოვდეს, რომ # # DenyUsers და AllowUsers დირექტივები იღებენ მომხმარებლის # # სახელს პარამეტრად, ხოლო DenyGroups და AllowGroups იღებენ # # ჯგუფის სახელს. იხილეთ PATTERNS in man ssh_config დამატებითი # # ინფორმაციისთვის მომხმარებლის და ჯგუფის სახელების ჩაწერის ფორმების შესახებ. # # # ## DenyUsers ############################################################## ### # # # იმ მომხმარებლების სია, რომლებსაც არ შეუძლიათ გამოიყენონ sshd. # # ნაგულისხმევი - არ არის მითითებული = არავინ არის აკრძალული. იმათ. თუ აქ მითითებულია # # მომხმარებელი, მაშინ მას ეკრძალება წვდომა # # ssh სერვერზე. # # # ## დაუშვით მომხმარებლები ############################################################### ## # # # იმ მომხმარებლების სია, რომლებსაც შეუძლიათ გამოიყენონ sshd, # # ნაგულისხმევად - არ არის მითითებული = დაშვებულია ყველასთვის. იმათ. თუ მითითებულია # # მინიმუმ ერთი მომხმარებელი, ssh წვდომა სერვერზე # # მხოლოდ ამ მომხმარებლისთვის არის ხელმისაწვდომი. # # # ## DenyGroups ################################################################ ## # # # იმ ჯგუფების სია, რომლებიც არ უნდა იყოს გამოყენებული sshd-ის მიერ. # # ნაგულისხმევი - არ არის მითითებული = ჯგუფი არ არის აკრძალული. ## ანუ თუ ერთი ჯგუფი მაინც არის მითითებული, მაშინ ამ ჯგუფში შემავალ მომხმარებლებს # # აეკრძალებათ წვდომა ssh # # სერვერზე. # # # ## ნებადართული ჯგუფები ########################################## # # # # ჯგუფის სია, რომელთა გამოყენება sshd-ს შეუძლია. # # ნაგულისხმევი - არ არის მითითებული = ნებადართულია ყველასთვის. იმათ. თუ მითითებულია # # მინიმუმ ერთი ჯგუფი, მაშინ მხოლოდ მასში შემავალ მომხმარებლებს# # ექნებათ წვდომა ssh სერვერზე.# # # ################## ############################################### ### კავშირის სტატუსის განმსაზღვრელი ვარიანტები ############################################################## ####### ######################## # # ## TCPKeepAlive ############## ######### ######################## # # # მიუთითებს, სჭირდება თუ არა სისტემას გაუგზავნოს TCP შეტყობინებები კლიენტს # # კავშირის შესანარჩუნებლად. თუ ამ პაკეტებს გაგზავნით, # #, შეგიძლიათ განსაზღვროთ, გატეხილია თუ არა კავშირი. თუმცა, ეს ასევე # # ნიშნავს, რომ კავშირი შეიძლება გაწყდეს # # მარშრუტის მომენტალური შეწყვეტის შემთხვევაში და # # ეს ძალიან შემაშფოთებელია ზოგიერთისთვის. მეორეს მხრივ, თუ # # ასეთი შეტყობინებები არ გაიგზავნება, სერვერზე სესიები შეიძლება # # გაგრძელდეს განუსაზღვრელი ვადით, შექმნას "მოჩვენება" მომხმარებლები # # და გადაყლაპოს სერვერის რესურსები. ნაგულისხმევი მნიშვნელობა არის "დიახ", # # ე.ი. ასეთი შეტყობინებების გაგზავნა. # # ასეთი შეტყობინებების გაგზავნის გამორთვისთვის, დააყენეთ მნიშვნელობა "არა". ადრე ამ # # ვარიანტს ერქვა KeepAlive. აღსანიშნავია, რომ # # არის უფრო უსაფრთხო გზები # # კავშირის სტატუსის შესამოწმებლად (იხ. ქვემოთ). # # # TCPKeepAlive დიახ # # ## ClientAliveCountMax ##################################### # ადგენს კლიენტებს შეტყობინებების რაოდენობას, რომლებსაც sshd # # აგზავნის ზედიზედ # # კლიენტისგან პასუხის მიღების გარეშე. თუ ბარიერი მიღწეულია და # # კლიენტი არ პასუხობს, sshd გათიშავს კლიენტს და წყვეტს # # ssh სესიას. აღსანიშნავია, რომ ასეთი # # შეტყობინებების გამოყენება სრულიად განსხვავდება TCPKeepAlive დირექტივისგან. # # კლიენტებს/შეტყობინებები იგზავნება დაშიფრული # # არხით და, შესაბამისად, არ ექვემდებარება გაყალბებას. შეტყობინებები # # TCPKeepAlive ექვემდებარება გაყალბებას. კლიენტი ცოცხალი # # მექანიზმი განსაკუთრებით ღირებულია იმ შემთხვევებში, როდესაც სერვერს და კლიენტს სჭირდება # #, რომ იცოდნენ, როდის გახდა კავშირი უმოქმედო. ნაგულისხმევი # # მნიშვნელობა არის 3. იმ შემთხვევაში, თუ ClientAliveInterval # # დაყენებულია 15-ზე და ClientAliveCountMax დარჩება # # ნაგულისხმევად, უპასუხო კლიენტები გაითიშება დაახლოებით # # 45 წამის შემდეგ. ეს დირექტივა მუშაობს მხოლოდ # # ssh2 პროტოკოლისთვის. # # # ## ClientAliveInterval ######################################### ადგენს დროის ინტერვალს წამებში. თუ ამ # # ინტერვალის განმავლობაში კლიენტთან არ არის კომუნიკაცია, sshd # # აგზავნის შეტყობინებას დაშიფრულ არხზე და მოითხოვს კლიენტისგან # # პასუხს. ნაგულისხმევი არის 0, ე.ი. ## არ გაგზავნოთ ასეთი შეტყობინებები. ეს დირექტივა მუშაობს # # მხოლოდ ssh2 პროტოკოლისთვის. ############################################### ############# ################ ზოგადი ავტორიზაციის პარამეტრები ################### ################################################ ######## # # ## ავტორიზებული კლავიშების ფაილი ################################### # # # # განსაზღვრავს ფაილს, რომელიც შეიცავს საჯარო გასაღებებს # #, რომლებიც გამოიყენება მომხმარებლების ავთენტიფიკაციისთვის. # # დირექტივა შეიძლება შეიცავდეს %M ფორმის ნიშნებს, რომლებიც ჩასმულია # # კავშირის დამყარების პროცესში. # # განსაზღვრულია შემდეგი ნიშნები: # # %% - ჩანაცვლებულია სიტყვასიტყვით "%" # # %h - შეიცვალა ავტორიზებული მომხმარებლის მთავარი დირექტორია # # # # # %u - შეიცვალა ავტორიზებული მომხმარებლის სახელით # # ამრიგად, გასაღების ფაილი შეიძლება იყოს მითითებული, როგორც # # აბსოლუტური გზით (ანუ ერთი გაზიარებული ფაილი კლავიშებით), და # # დინამიურად - მომხმარებლის მიხედვით (ანუ ერთი # # ფაილი თითოეული მომხმარებლისთვის). # # ნაგულისხმევი არის „.ssh/authorized_keys“. # # საკვანძო ფაილის მაგალითი მომხმარებლის მთავარ საქაღალდეში: # # AuthorizedKeysFile %h/.ssh/authorized_key # # მაგალითი გაზიარებული ფაილისთვის: # # AuthorizedKeysFile /etc/ssh/authorized_keys # # იხილეთ ავტორიზებული_გასაღები ფაილის აღწერა მეტი # # ინფორმაცია. # # # ## ChallengeResponseAuthentication ########################### # # # # აკონკრეტებს, დაუშვას თუ არა გამოწვევა-პასუხის ავტორიზაცია # # ). ყველა # # ტიპის ავტორიზაცია login.conf-დან არის მხარდაჭერილი. დაუშვას. # # Ubuntu-ზე - გამორთულია უსაფრთხოების მიზეზების გამო. # # # ChallengeResponseAuthentication no # # ## HostbasedUsesNameFromPacketOnly ########################### აზუსტებს, თუ როგორ უნდა მიიღოს სერვერმა კლიენტის ჰოსტის სახელი ## როცა ავტორიზაციის სქემა, რომელიც დაფუძნებულია ჰოსტის გადამოწმებაზე. # # თუ დაყენებულია "დიახ", sshd # # გამოიყენებს კლიენტის მიერ მოწოდებულ ჰოსტის სახელს # # ~/.shosts, ~/.rhosts ან /etc/hosts.equiv ფაილებში შესატყვისობის შესამოწმებლად. # # (შეასრულებს საპირისპირო DNS გარჩევადობას) თუ დაყენებულია "no" # # - sshd გადაწყვეტს სახელს თავად TCP კავშირიდან. # # ნაგულისხმევი არის "არა". # # # ## იგნორირება Rhosts ########################################## # # # ხელს უშლის .rhosts და .shosts ფაილების # # გამოყენებას ჰოსტზე დაფუძნებულ ავთენტიფიკაციაში. # # (RhostsRSAA ავტორიზაცია ან HostbasedAuthentication). # # /etc/hosts.equiv და /etc/ssh/shosts.equiv ფაილები ჯერ კიდევ # # გამოიყენება. # # ნაგულისხმევი არის "დიახ". # # # იგნორირებაRhosts დიახ # # ## IgnoreUserNnownHosts #################################################################### მიუთითებს, უნდა უგულებელყოს თუ არა sshd მომხმარებლის # # "ცნობილი ჰოსტების" ფაილი ~/.ssh/known_hosts # # ჰოსტზე დაფუძნებული ავტორიზაციის პროცესის დროს # # (RhostsRSAAuthentication ან HostbasedAuthentication). # # ნაგულისხმევი არის "არა". # # # ## PermitBlacklistedKeys ################################## # # მიუთითებს, მიიღება თუ არა sshd გასაღებები შავ სიაშია # #, როგორც კომპრომეტირებული (ცნობილი-კომპრომისირებული # # კლავიშები (იხ. ssh-vulnkey)). თუ დაყენებულია „დიახ“ - # # ავტორიზაციის მცდელობები ასეთი კლავიშებით ჩაიწერება # # და მიიღება, თუ დაყენებულია „არა“ - # # ავტორიზაციის მცდელობა უარყოფილი იქნება. # # ნაგულისხმევი არის "არა". # # # ## PermitEmptyPasswords ##################################################################### პაროლის გამოყენებით დაშვებული ავთენტიფიკაციის შემთხვევაში, # # მიუთითებს, შესაძლებელია თუ არა ცარიელი პაროლით შესვლა. # # ნაგულისხმევი არის "არა". # # # PermitEmptyPasswords no # # ## PermitRootLogin ############################################################### # # # # მიუთითებს, შესაძლებელია თუ არა ssh შესვლა, როგორც სუპერმომხმარებლის # # (root). შეუძლია მიიღოს შემდეგი მნიშვნელობები: # # „დიახ“ - სუპერმომხმარებელს შეუძლია შესვლა. გამოყენებულია # # მიმდინარე გლობალური ავტორიზაციის სქემა. # # # # "პაროლის გარეშე" - სუპერმომხმარებელს შეუძლია შესვლა. ამისთვის # # პაროლის ავთენტიფიკაცია გამორთული იქნება. # # # # "მხოლოდ იძულებითი ბრძანებები" - სუპერმომხმარებელი შეძლებს შესვლას # # ავტორიზაციის გამოყენებით საჯარო გასაღების საფუძველზე და # # მხოლოდ იმ შემთხვევაში, თუ ის გაივლის შესასრულებლად საჭირო ბრძანებას. # # ეს სასარგებლოა სარეზერვო ასლების შესაქმნელად, # # მაშინაც კი, როდესაც ნორმალური (ანუ არა ssh-ის საშუალებით) # # სუპერმომხმარებლის შესვლა გამორთულია. სუპერმომხმარებლის ავთენტიფიკაციის ყველა სხვა # # მეთოდი დაიბლოკება.# # # # „არა“ - სუპერმომხმარებელს არ შეუძლია გამოიყენოს ssh # # შესვლისთვის. # # # # ნაგულისხმევი მნიშვნელობა არის "დიახ". # # # PermitRootLogin დიახ # # ## პროტოკოლი ############################################################## ######## # # # განსაზღვრავს, რომელი პროტოკოლი უნდა გამოიყენოს sshd. # # '1' და '2' შესაძლო მნიშვნელობებია ssh1 და ssh2 # # შესაბამისად. შესაძლებელია ერთდროული ჩაწერა, ამ შემთხვევაში ## მნიშვნელობები უნდა გამოიყოს მძიმეებით. # # ნაგულისხმევი არის "2.1". # # აღსანიშნავია, რომ # # ჩანაწერებში ოქმების თანმიმდევრობა არ განსაზღვრავს პრიორიტეტს, რადგან კლიენტი ირჩევს სერვერის მიერ შემოთავაზებული # # პროტოკოლიდან გამოიყენოს "2,1" ჩანაწერი აბსოლუტურად იდენტური # # ჩანაწერის "1,2". # # # პროტოკოლი 2 # # ## UsePAM ########################################################## ######### # # # ჩართავს PAM-ის ინტერფეისს (დაერთება ავთენტიფიკაციის მოდული # # ინტერფეისი, თუ დაყენებულია "დიახ", სესიისა და ანგარიშის მოდულის დამუშავების გარდა, ყველა ტიპის ავტორიზაცია იქნება # # PAM ავთენტიფიკაცია). გამოიყენება # # გამოწვევა-პასუხის საფუძველზე (ChallengeResponseAuthentication და # # PasswordAuthentication) რადგან # # გამოწვევა-პასუხის ავთენტიფიკაცია PAM-ში, როგორც წესი, ასრულებს იგივე როლს # #, როგორც პაროლის ავტორიზაცია, თქვენ უნდა გამორთოთ # # ან პაროლის ავტორიზაცია ან # # ChallengeResponseAuthentication. აღსანიშნავია, რომ # # თუ UsePAM დირექტივა ჩართულია, თქვენ ვერ შეძლებთ # # sshd-ის გაშვებას, როგორც მომხმარებლის გარდა, გარდა root. # # ნაგულისხმევი მნიშვნელობა არის "არა". # # # გამოიყენეთPAM დიახ # # ## პაროლის ავთენტიფიკაცია ################################## # # # მიუთითებს თუ არა ჩართულია თუ არა ავტორიზაცია # # პაროლის გამოყენებით. # # ნაგულისხმევი არის "დიახ". # # # ## HostKey ############################################################## ##### # # # განსაზღვრავს ფაილს, რომელიც შეიცავს კერძო ჰოსტის გასაღებს # #, რომელსაც იყენებს SSH. ნაგულისხმევი არის /etc/ssh/ssh_host_key # # ssh1 პროტოკოლისთვის და /etc/ssh/ssh_host_rsa_key და # # /etc/ssh/ssh_host_dsa_key ssh2 პროტოკოლისთვის. აღსანიშნავია # #, რომ sshd არ გამოიყენებს ფაილს # #, რომელიც ხელმისაწვდომია მომხმარებლის გარდა. შეგიძლიათ # # გამოიყენოთ მრავალი საკვანძო ფაილი, კლავიშები არის "rsa1" # # ssh1 პროტოკოლისთვის და "dsa"/"rsa" ssh2 პროტოკოლისთვის. # # # HostKey /etc/ssh/ssh_host_rsa_key HostKey /etc/ssh/ssh_host_dsa_key # # ############################ ### ###################################### SSH პროტოკოლის ვერსია 1 (ssh1) პარამეტრები ### ############################################# ### ################### # კატეგორიულად არ არის რეკომენდებული ssh1 პროტოკოლის გამოყენება.# # ssh2 პროტოკოლი ბევრად უფრო უსაფრთხოა ვიდრე ssh1 # ### ############################################### ####### # # ## გასაღების აღდგენის ინტერვალი ################################ ssh1 პროტოკოლი - ერთხელ გარკვეულ დროს # # ავტომატურად გენერირდება ახალი დროებითი სერვერის # # გასაღები (თუ გამოყენებულია). ეს კეთდება იმისთვის, რომ # # თავიდან აიცილოს ჩაჭრილი სესიების გაშიფვრა, რომლის მიზანია # # მოგვიანებით შეხვიდეთ მანქანაში ამ სესიების პარამეტრებით და # # მოიპაროთ გასაღებები. ასეთი გასაღები არსად არ ინახება (ის ინახება # # RAM-ში). ეს დირექტივა განსაზღვრავს გასაღების # # სიცოცხლის ხანგრძლივობას წამებში, რის შემდეგაც ის # # კვლავ გენერირებული იქნება. თუ მნიშვნელობა დაყენებულია 0 - # #-ზე, გასაღები აღარ გენერირებული იქნება. # # ნაგულისხმევი მნიშვნელობა არის 3600 (წამი). # # # KeyRegenerationInterval 3600 # # ## RhostsRSAA ავტორიზაცია ################################ # # # მიუთითებს, ეფუძნება თუ არა ავტორიზაციას # # rhosts-ზე ან /etc/hosts.equiv ფაილებზე # # ჰოსტის წარმატებულ ავთენტიფიკაციასთან ერთად RSA-ს მეშვეობით. # # შესაბამისი მხოლოდ ssh1 პროტოკოლისთვის. # # ნაგულისხმევი არის "არა". # # # RhostsRSAA ავტორიზაცია არა # # ## RSAA ავტორიზაცია #################################################################### ## # # # მიუთითებს, დაშვებულია თუ არა "სუფთა" RSA ავთენტიფიკაცია. # # შესაბამისი მხოლოდ ssh1 პროტოკოლისთვის. # # ნაგულისხმევი არის "დიახ". # # # RSAA ავტორიზაცია დიახ # # ## ServerKeyBits ############################################################### ### # # # განსაზღვრავს ბიტების რაოდენობას სერვერის დროებით გასაღებში # # ssh1 პროტოკოლისთვის. მინიმალური მნიშვნელობა არის 512. # # ნაგულისხმევი მნიშვნელობა არის 1024. # ServerKeyBits 768 # # ############################### ####################################### SSH პროტოკოლის ვერსია 2 (ssh2) პარამეტრები ## ## ############################################# ### ################### # ### შიფრები ###################### ## ##################### # # # მიუთითებს დაშიფვრის ალგორითმებს, რომლებიც დაშვებულია # # ssh2 პროტოკოლისთვის. მრავალი ალგორითმი უნდა იყოს # # გამოყოფილი მძიმეებით. მხარდაჭერილი ალგორითმები: # # "3des-cbc", "aes128-cbc", "aes192-cbc", "aes256-cbc", # # "aes128-ctr", "aes192-ctr", "aes256-ctr", " arcfour128", # # "arcfour256", "arcfour", "blowfish-cbc", "cast128-cbc". # # ნაგულისხმევად: # # aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,arcfour128, # # arcfour256,arcfour,aes192-cbc,aes256-cbc,aes128-ctr,29a,#6cts -ctr # # # ## HostbasedAuthentication ################################## # # მიუთითებს არის თუ არა ავტორიზაცია დაშვებულია # # ჰოსტის დადასტურების საფუძველზე. rhosts ან /etc/hosts.equiv მონიშნულია, # # და წარმატების შემთხვევაში, საჯარო გასაღების # # წარმატებულ შემოწმებასთან ერთად, წვდომა ნებადართულია. ეს დირექტივა # # იგივეა, რაც RhostsRSAA ავტორიზაციის დირექტივა და # # შესაფერისია მხოლოდ ssh2 პროტოკოლისთვის. # # ნაგულისხმევი არის "არა". # # # HostbasedAuthentication no # # ## MACs ######################################################################################## ############ # # # მიუთითებს მოქმედ MAC ალგორითმს (შეტყობინება # # ავთენტიფიკაციის კოდი). MAC ალგორითმი გამოიყენება # # ssh2 პროტოკოლით მონაცემთა მთლიანობის დასაცავად. მრავალი # # ალგორითმი გამოყოფილი უნდა იყოს მძიმეებით. # # ნაგულისხმევი: # # hmac-md5,hmac-sha1, [ელფოსტა დაცულია] ,hmac-ripemd160, # # hmac-sha1-96,hmac-md5-96 # # # ## PubkeyAuthentication ######################### ########## # # # მიუთითებს, დასაშვებია თუ არა ავტორიზაცია # # საჯარო გასაღების საფუძველზე. აქტუალურია მხოლოდ ssh2 პროტოკოლისთვის. # # ნაგულისხმევი არის "დიახ". # # # PubkeyAuthentication დიახ #################################################################### #################################### GSSAPI პარამეტრები ############ ## ############################################## ## ######################## # ############# გამოიყენება მხოლოდ ssh2 პროტოკოლისთვის #### #### ### # # ## GSSAPIAავთენტიფიკაცია ############################################################# ## # # # მიუთითებს, ეფუძნება თუ არა მომხმარებლის ავტორიზაცია # # GSSAPI-ს. ნაგულისხმევი არის "არა", ე.ი. აკრძალულია. # # # ## GSSAPIKeyExchange ######################################### მიუთითებს, დასაშვებია თუ არა გასაღების გაცვლა # # GSSAPI-ზე დაყრდნობით. გასაღების გაცვლა GSSAPI-ის გამოყენებით არ ეყრდნობა # # ssh კლავიშებს ჰოსტის იდენტურობის დასადასტურებლად. # # ნაგულისხმევი არის "არა" - ე.ი. გაცვლა აკრძალულია. # # # ## GSSAPICCleanupCredentials ############################## # # # აკონკრეტებს ავტომატურად გაანადგუროს თუ არა მომხმარებლის ქეში ავთენტიფიკაციის სერთიფიკატების შესახებ, როდესაც # # სესია დასრულდება. # # ნაგულისხმევი არის "დიახ" - ე.ი. უნდა განადგურდეს. # # # ## GSSAPIStrictAcceptorCheck ############################### # # # განსაზღვრავს რამდენად მკაცრი უნდა იყოს პირადობის შემოწმება # # კლიენტი GSSAPI-ით ავთენტიფიკაციისას. # # მნიშვნელობა "დიახ" იწვევს კლიენტს ავთენტიფიკაციას # # მიმღები ჰოსტის სერვისზე მიმდინარე ჰოსტზე. მნიშვნელობა "no" # # საშუალებას აძლევს კლიენტს ავთენტიფიკაცია მოახდინოს ნებისმიერი # # სერვისის გასაღების გამოყენებით. # # ნაგულისხმევი მნიშვნელობა არის "დიახ". # # აღსანიშნავია, რომ "არა"-ზე დაყენება შეიძლება # # იმუშაოს მხოლოდ იშვიათ Kerberos GSSAPI ბიბლიოთეკებთან. ############################################### ################################ Kerberos Options ################ ############################################### ### ################### # ### KerberosAuthentication ####################### ### ######## # # # მიუთითებს, მოითხოვს თუ არა მომხმარებლის მიერ მოწოდებული პაროლი # # ავტორიზაციისთვის # # (PasswordAuthentication) ვალიდაციას Kerberos KDC-ში. # # ამ პარამეტრის გამოსაყენებლად, სერვერმა უნდა # # დაადასტუროს, რომ KDC არის ჭეშმარიტი. (სერვერს სჭირდება # # Kerberos servtab, რომელიც იძლევა # # KDC-ის იდენტურობის გადამოწმების საშუალებას) # # ნაგულისხმევი არის "არა". # # # ## KerberosGetAFSToken ######################################### თუ AFS აქტიურია და მომხმარებელმა მიიღო Kerberos 5 TGT, # # სცადოს თუ არა AFS ტოკენის მოპოვება, სანამ მომხმარებელი # # შეძლებს მის საწყის საქაღალდეზე წვდომას. # # ნაგულისხმევი არის "არა". # # # ## KerberosOrLocalPasswd ################################# # # # მიუთითებს რა უნდა გააკეთოს ამ შემთხვევაში თუ ავტორიზაცია # # Kerberos-ის მეშვეობით ვერ მოხერხდა. თუ # # მნიშვნელობა = "დიახ", პაროლი გადამოწმებული იქნება # # ნებისმიერი დამატებითი ადგილობრივი ავტორიზაციის მექანიზმის გამოყენებით, # # მაგალითად /etc/passwd. # # ნაგულისხმევი არის "დიახ". # # # ## KerberosTicketCleanup ################################# # # # მიუთითებს ავტომატურად მოკვლა თუ არა ფაილი # # მომხმარებლის ბილეთების ქეშით სესიის ბოლოს. # # ნაგულისხმევი არის "დიახ". ############################################### ############# ################# გადამისამართების ვარიანტები ################## ################################################ ## ############# # # ######################################################## ### ### # # მიუთითებს გადამისამართების დაშვება ან გამორთვა # # ssh-agent ასევე აკრძალული იქნება # # shell წვდომა, რადგან მათ ყოველთვის შეეძლებათ დააინსტალირონ # # საკუთარი აგენტის ანალოგები ############## # # # მიუთითებს, ჩართოს თუ გამორთოს TCP. გადამისამართება # # ნაგულისხმევი არის "დიახ", ანუ ნებადართულია # # იგივე AllowAgentForwarding-ის შემთხვევაში, # # გადამისამართების გამორთვა არ გაზრდის უსაფრთხოებას, სანამ # # მომხმარებლებს აქვთ კონსოლის წვდომა, რადგან მათ შეუძლიათ # # დააინსტალირონ საკუთარი კოლეგები. # # # # ## კარიბჭე პორტები ################################ ## # # # განსაზღვრავს, დაუშვას თუ არა დისტანციური ჰოსტების წვდომა # # გადაგზავნილ პორტებზე. ნაგულისხმევად, sshd უსმენს # #-ს გადაგზავნილ პორტებთან კავშირებისთვის მხოლოდ ლოკალურ # # loopback ინტერფეისზე. ეს ხელს უშლის სხვა დისტანციური # # ჰოსტების დაკავშირებას გადაგზავნილ პორტებთან. თქვენ შეგიძლიათ # # გამოიყენოთ GatewayPorts, რათა sshd-ს ეს # # გააკეთოს. დირექტივას შეუძლია მიიღოს 3 მნიშვნელობა: # # "no" - მხოლოდ loopback. # # "დიახ" - ნებისმიერი მისამართი. # # "clientspecified" - კლიენტის მიერ მითითებული მისამართები. # # # ## ნებართვის გახსნა ############################################################## ## # # # მიუთითებს სად არის დაშვებული TCP პორტის გადაგზავნა. # # გადამისამართების მითითება უნდა იყოს # # შემდეგი ფორმებიდან: # # PermitOpen host:port # # PermitOpen IPv4_addr:port # # PermitOpen :port # # მრავალი ჩანაწერის მითითება შესაძლებელია მათი ინტერვალით გამოყოფით. # # "ნებისმიერი" არგუმენტი შეიძლება გამოყენებულ იქნას პორტის გადამისამართების ყველა # # შეზღუდვის მოსახსნელად. ნაგულისხმევად, ნებისმიერი # # გადამისამართება დასაშვებია. # # # ## ნებართვის გვირაბი ############################################################### # # # მიუთითებს, დასაშვებია თუ არა tun მოწყობილობების გადამისამართება. # # შეუძლია მიიღოს მნიშვნელობები: # # "დიახ" # # "წერტილი-წერტილამდე" (მე-3 ქსელის შრე) # # "ეთერნეტი" (მე-2 ქსელის შრე) # # "არა" # # მნიშვნელობა "დიახ" იძლევა ორივე "წერტილს" -to-point" # # და "ethernet" ერთდროულად. ნაგულისხმევი არის "არა". ############################################### ############# ############################################################################## ### ############################################ ## ############# # # ## SyslogFacility ################################################## ## ########## # # # აყენებს ჟურნალის ობიექტის კოდს შეტყობინებების ჩასაწერად # # syslog-ზე sshd-დან. შესაძლო მნიშვნელობები: # # DAEMON # # USER # # AUTH # # LOCAL0 # # LOCAL1 # # LOCAL2 # # LOCAL3 # # LOCAL4 # # LOCAL5 # # LOCAL6 # # LOCAL7 # # ნაგულისხმევი არის AUTH. # # # SyslogFacility AUTH # # ## LogLevel ######################################################################################## ### ######## # # # ადგენს sshd ჟურნალის სიტყვიერების დონეს. # # შესაძლო ვარიანტები: # # ჩუმად # # ჩუმად # # FATAL # # ERROR # # INFO # # VERBOSE # # DEBUG # # DEBUG1 # # DEBUG2 # # DEBUG3 # # ნაგულისხმევი არის ინფორმაცია. # # DEBUG და DEBUG1 ერთმანეთის ექვივალენტია. # # DEBUG2 და DEBUG3 დააყენეს გამართვის # # გამომავალი უმაღლესი დონეები. DEBUG დონეზე შესვლა საფრთხეს უქმნის # # მომხმარებლის კონფიდენციალურობას და არ არის რეკომენდებული. # # # LogLevel INFO # # ############################################################## ################################### X11 გადამისამართება ############# ############################################### #################### # ### X11გადაგზავნა ######################## ### ################ # # # მიუთითებს ჩართულია თუ არა X11 გრაფიკული ქვესისტემა # # გადამისამართება. შეუძლია მიიღოს მნიშვნელობები "დიახ" ან "არა". # # ნაგულისხმევი არის "არა". # # ყურადღება - მარტივი X11 გადამისამართების ჩართვა არის # # დიდი რისკი როგორც სერვერისთვის, ასევე კლიენტებისთვის, რადგან # # ასეთ გადამისამართებაში, sshd პროქსის ჩვენება # # იღებს კავშირებს ნებისმიერი მისამართიდან. გამოიყენეთ # # X11UseLocalhost დირექტივა # # X-ის გადამისამართების სერვერზე წვდომის შესაზღუდად. აღსანიშნავია, რომ # # გადამისამართების გამორთვა არ იძლევა გარანტიას, რომ # # მომხმარებელი ვერ შეძლებს X11-ის გადამისამართებას, რადგან # # კონსოლის წვდომის მქონე, ისინი ყოველთვის აყენებენ საკუთარ # # გადამისამართებას. X11 გადამისამართება # # ავტომატურად გამოირთვება, თუ ჩართულია UseLogin # # დირექტივა. # # # X11 გადამისამართება დიახ # # ## X11UseLocalhost ################################################################ ### # # # # მიუთითებს, უნდა შეზღუდოს თუ არა sshd # # X11 გადამისამართების ფარგლები ადგილობრივ მარყუჟის მისამართზე, ან # # უნდა დაუშვას ნებისმიერი მისამართი. ნაგულისხმევად, sshd # # აყენებს X11 გადამისამართების სერვერს ლოკალურ მისამართზე # # და აყენებს ჰოსტის სახელის ნაწილს DISPLAY გარემოს ცვლადის # #-ზე "localhost". აღსანიშნავია, რომ # # ზოგიერთი ძველი X11 კლიენტი შეიძლება არ იმუშაოს ამ # # პარამეტრებთან. ნაგულისხმევი არის "დიახ", ე.ი. გადამისამართება # # შემოიფარგლება ლოკალური ჰოსტით, მნიშვნელობა - "no" - გამორთავს # # შეზღუდვას. # # # ## XAuthLocation ########################################## # # # განსაზღვრავს xauth პროგრამის სრულ გზას. # # ნაგულისხმევი არის /usr/bin/X11/xauth. # # # ## X11DisplayOffset ######################################### მიუთითებს პირველი ჩვენების რიცხვს, რომელიც ხელმისაწვდომია sshd-ისთვის, როგორც # # X11 გადამისამართება. ეს კეთდება ისე, რომ # #, გადამისამართებული X-ები არ ემთხვეოდეს # # რეალურს. ნაგულისხმევი არის 10. # # # X11DisplayOffset 10 # # ############################################################### ####################################### სხვადასხვა ვარიანტები ####### # ############################################### ## ################################ შესვლაGraceTime ################ #### ######################## # # # დრო, რომლის შემდეგაც სერვერი გათიშავს # # მომხმარებელს, თუ ის ვერ შეძლებდა შესვლას. #დამაკმაყოფილებლად. მნიშვნელობა 0 - მომხმარებელს # # საშუალებას აძლევს შევიდეს სისტემაში განუსაზღვრელი ვადით. ნაგულისხმევი არის 120 (წამი). # # # LoginGraceTime 120 # # ## MaxAuthTries ############################################################## ### #### # # # მიუთითებს ავთენტიფიკაციის მცდელობების მაქსიმალურ რაოდენობაზე # # დაშვებულ კავშირზე. # # მას შემდეგ, რაც წარუმატებელი მცდელობების რაოდენობა გადააჭარბებს მითითებულ # # მნიშვნელობის ნახევარს, ყველა შემდგომი მცდელობა იქნება # # ჩანაწერი. ნაგულისხმევი მნიშვნელობა არის 6. # # # ## MaxSessions ######################################################### ####### # # # განსაზღვრავს ერთდროული კავშირების მაქსიმალურ რაოდენობას # # თითოეული ქსელის კავშირისთვის. ნაგულისხმევი არის 10. # # # ## MaxStartups ############################################################ ###### # # # განსაზღვრავს ერთდროული # # არაავტორიზებული კავშირების მაქსიმალურ რაოდენობას sshd-თან. თუ # # კავშირების რაოდენობა გადააჭარბებს ლიმიტს, ყველა დამატებითი # # კავშირი გაუქმდება მანამ, სანამ არ დასრულდება მიმდინარე # # კავშირები წარმატებული ავტორიზაციით # # ან ვადა ამოიწურება # # LoginGraceTime დირექტივაში მითითებულ დროში. ნაგულისხმევი მნიშვნელობა არის 10. # # სურვილისამებრ, შეგიძლიათ დააყენოთ კავშირები ადრე გადატვირთვისთვის # #-ით, მიუთითოთ სამი მნიშვნელობა, როგორც პარამეტრი, გამოყოფილი # # ორწერტით "start:rate:full" (მაგალითად: "10:30" :60"). # # sshd უარს იტყვის დაკავშირების მცდელობაზე, ალბათობით, რომელიც უდრის # # „რატე/100“ (ე.ი. ჩვენს მაგალითში - 30%), თუ უკვე არის # # „დაწყება“ (10) არაავტორიზებული კავშირები. # # ალბათობა იზრდება ხაზობრივად და ნებისმიერი # # კავშირის მცდელობა უარყოფილი იქნება, თუ არაავტორიზებული # # კავშირების რაოდენობა მიაღწევს "სრულს" (60). # # # ## შეკუმშვა ################################################################### # # # # მიუთითებს, ჩართულია თუ არა მონაცემთა შეკუმშვა. შეიძლება იყოს # # "დიახ" - შეკუმშვა ჩართულია. # # "დაგვიანებული" - შეკუმშვა დაგვიანებულია, სანამ # # მომხმარებელი წარმატებით არ დადასტურდება. # # "არა" - შეკუმშვა გამორთულია. # # ნაგულისხმევი "გადაიდო". # # # ## გამოიყენეთ შესვლა ############################################################## #### # # # მიუთითებს, უნდა იქნას გამოყენებული თუ არა შესვლა # # ინტერაქტიული სესიისთვის. ნაგულისხმევი მნიშვნელობა არის "არა". # # აღსანიშნავია, რომ შესვლა არასოდეს ყოფილა გამოყენებული # # დისტანციური ბრძანებების შესასრულებლად. ასევე გაითვალისწინეთ, რომ # # შესვლის გამოყენებით შეუძლებელს გახდის # # X11Forwarding დირექტივის გამოყენებას, რადგან ლოგინმა არ იცის რა გააკეთოს xauth-თან # #. თუ ჩართულია # # UsePrivilegeSeparation დირექტივა, ის გაითიშება # # ავტორიზაციის შემდეგ. # # # ## UsePrivilegeSeparation #################################### # # # აზუსტებს თუ არა sshd უნდა გამოეყო პრივილეგიები. თუ დიახ # #, მაშინ შეიქმნება არაპრივილეგირებული ბავშვის # # პროცესი შემომავალი ქსელის ტრაფიკისთვის. წარმატებული # # ავტორიზაციის შემდეგ, შეიქმნება სხვა პროცესი შესული მომხმარებლის # # პრივილეგიებით. # # პრივილეგიების გამიჯვნის მთავარი მიზანია წვდომის უფლებების ბოროტად გამოყენების თავიდან აცილება. # # ნაგულისხმევი მნიშვნელობა არის "დიახ". # # # გამოიყენეთ პრივილეგიის გამოყოფა დიახ # # ## მკაცრი რეჟიმები ################################################################# ### ##### # # # განსაზღვრავს, უნდა შეამოწმოს თუ არა sshd მომხმარებლის საქაღალდეების და ფაილების წვდომის და # # მფლობელობის რეჟიმები # # სანამ მომხმარებელს შესვლის უფლებას მისცემს. ეს ჩვეულებრივ იმიტომ ხდება, რომ # # დამწყები ხშირად ხდის მათ ფაილებს ყველასთვის დასაწერად # #. # # # მკაცრი რეჟიმი დიახ # # ## AcceptEnv ############################################################### ####### # # # განსაზღვრავს, რომელი გარემოს ცვლადები იქნება მიღებული კლიენტის მიერ # # გადაცემული. იხილეთ SendEnv ვარიანტი კლიენტში. # # აღსანიშნავია, რომ ცვლადების გადაცემა შესაძლებელია მხოლოდ # # ssh2 პროტოკოლისთვის. ცვლადები მითითებულია სახელით, შეიძლება გამოყენებულ იქნას # # ნიღბები ('*' და '?'). შეგიძლიათ მიუთითოთ # # მრავალი ცვლადი, გამოყოფილი ინტერვალით, ან გაყოთ AcceptEnv # # მრავალ ხაზად. იყავით ფრთხილად - ზოგიერთი # # გარემოს ცვლადი შეიძლება გამოყენებულ იქნას # # აკრძალული მომხმარებლის გარემოს გვერდის ავლით. გამოიყენეთ ეს # # დირექტივა ფრთხილად. ნაგულისხმევად, არცერთი # # მომხმარებლის გარემოს ცვლადი არ არის მიღებული. # # # AcceptEnv LANG LC_* # # ## PermitUserEnvironment ###################################################################################### განსაზღვრავს, მიიღოს თუ არა sshd # # ~/.ssh/environment და გარემო= ვარიანტი # # ~/.ssh/authorized_keys-ში. ნაგულისხმევი არის "არა". აღსანიშნავია # #, რომ გარემოს დამუშავების ჩართვამ შეიძლება მისცეს # # მომხმარებლებს შესაძლებლობა გადალახონ შეზღუდვები ზოგიერთ # # კონფიგურაციაში, რომლებიც იყენებენ მექანიზმებს, როგორიცაა # # LD_PRELOAD. # # # # # # # # PidFile ############################################################ ######## # # # განსაზღვრავს ფაილს, რომელიც შეიცავს SSH დემონის პროცესის ID # # (პროცესის ID, PID). # # ნაგულისხმევი - /var/run/sshd.pid # # # # # ## PrintLastLog ########################### ############## # # # განსაზღვრავს, უნდა აჩვენოს თუ არა sshd ბოლო სესიის თარიღს და დროს # #, როდესაც მომხმარებელი ინტერაქტიულად შედის ჟურნალში. # # ნაგულისხმევი არის "დიახ". # # # Print LastLog დიახ # # ## PrintMotd ############################################################## ####### # # # განსაზღვრავს, უნდა აჩვენოს თუ არა sshd /etc/motd ##, როდესაც მომხმარებელი ინტერაქტიულად შედის სისტემაში. ზოგიერთ # # სისტემაზე (მაგალითად, Ubuntu) ეს ინფორმაცია ასევე არის # # ნაჩვენები ჭურვის მიერ. # # ნაგულისხმევი მნიშვნელობა არის "დიახ". # # # PrintMotd no # # ## ბანერი ########################################################## ########## # # # მიუთითებს, რომელი ფაილი შეიცავს ტექსტურ ბანერს, რომელიც # # იქნება ნაჩვენები მომხმარებლისთვის # # ავტორიზაციის პროცედურამდე. ვარიანტი ხელმისაწვდომია მხოლოდ ssh2 პროტოკოლისთვის.# # ნაგულისხმევად - არაფერს აჩვენებს. # # Ubuntu-ზე, issue.net ფაილი შეიცავს ფრაზას Ubuntu (ვერსია), # # მაგალითად, კარმულისთვის ეს არის "Ubuntu 9.10". შეიძლება # # იყოს გამოყენებული შესაძლო თავდამსხმელების დეზორიენტაციისთვის, # # იქ დაწერით, მაგალითად, "My D-Link Interet Router" =) # # # ბანერი /etc/issue.net # # ## ChrootDirectory ###### ####### ############################# # # # თუ მითითებულია, უზრუნველყოფს გზას # # იყოს chrooted ავტორიზაციის შემდეგ. ბილიკი და მთელი მისი # # შიგთავსი უნდა შეესაბამებოდეს სუპერმომხმარებლის კუთვნილ # # საქაღალდეს და არ იყოს # # დასაწერი სხვა მომხმარებლების მიერ. # # ბილიკი შეიძლება შეიცავდეს ლეიბლებს, რომლებიც ჩანაცვლებულია # # ავტორიზაციის პროცესში: # # %% - ჩანაცვლებულია სიტყვასიტყვით "%" # # %h - ჩანაცვლებულია ავტორიზებული მომხმარებლის მთავარი დირექტორია # # # # # %u - ჩანაცვლებულია ავტორიზებული მომხმარებლის სახელით # # chroot - საქაღალდე უნდა შეიცავდეს ყველა საჭირო ფაილს და # # საქაღალდეს მომხმარებლის სესიისთვის. ინტერაქტიული # # სესიისთვის საჭიროა მინიმუმ: # # ჭურვი, ჩვეულებრივ sh # # ძირითადი მოწყობილობები /dev-ში, როგორიცაა: # # null, zero, stdin, stdout, stderr, შემთხვევითი და tty # # მონაცემთა გადაცემის სესიისთვის. sftp no # # დამატებითი პარამეტრებია საჭირო, თუ გამოიყენება შიდა # # sftp სერვერის პროცესი. იხილეთ ქვესისტემა # # მეტი ინფორმაციისთვის. ნაგულისხმევად, chroot არ არის შესრულებული. # # # ## ForceCommand ############################################################### # # # იწვევს მითითებული ბრძანების შესრულებას. უგულებელყოფს # # ნებისმიერ ბრძანებას, რომელიც გაგზავნილია კლიენტის მიერ ან დაწერილია # # ~/.ssh/rc-ზე. ბრძანება გამოიძახება მომხმარებლის # # ჭურვიდან -c ოფციით. ვარგისია ჭურვის, # # ბრძანების ან ქვესისტემის გასაშვებად. ყველაზე სასარგებლო # # Match ბლოკის შიგნით. კლიენტის მიერ თავდაპირველად გაცემული ბრძანება ინახება # # SSH_ORIGINAL_COMMAND გარემოს ცვლადში. თუ თქვენ # # მიუთითებთ "internal-sftp" ბრძანებას, დაიწყება # # შიდა sftp სერვერი, რომელსაც არ სჭირდება დამატებითი # # ფაილები და საქაღალდეები, რომლებიც აღწერილია ChrootDirectory დირექტივაში. # # # ## ქვესისტემა ############################################################## ### # # # განსაზღვრავს და აკონფიგურირებს გარე ქვესისტემას (მაგალითად # # ფაილის გადაცემის დემონი). # # არგუმენტები არის სახელი და ბრძანება (შესაძლო # # არგუმენტებით), რომლებიც შესრულდება # # ქვესისტემის მოთხოვნისას. sftp-server ბრძანება იწყებს "sftp" - # # ფაილის გადაცემის ქვესისტემას. გარდა ამისა, შეგიძლიათ მიუთითოთ # # "internal-sftp" როგორც ქვესისტემა - რომელიც გაუშვებს # # შიდა sftp სერვერს. ამან შეიძლება მნიშვნელოვნად გაამარტივოს # # კონფიგურაცია # # ChrootDirectory დირექტივის გამოყენებისას. აქტუალურია მხოლოდ ssh2 პროტოკოლისთვის. # # # ქვესისტემა sftp /usr/lib/openssh/sftp-server # # ######################################################### ################################################ მატჩი ბლოკი ################################################################### ## ####################################### სპეციალურად გადავიტანე ბოლომდე ფაილი უფრო მოსახერხებელი რომ იყოს # # ჩაწერეთ მატჩის წესები. # # MadKox. # # # # Match დირექტივა წარმოადგენს პირობითი # # ბლოკის დაწყებას. თუ # # Match სტრიქონში მითითებული ყველა კრიტერიუმი დაკმაყოფილებულია, შესრულდება დირექტივები ბლოკის მომდევნო სტრიქონებზე, # #, რაც საშუალებას აძლევს # # sshd_config ფაილში არსებული გლობალური დირექტივების მნიშვნელობების გვერდის ავლით იმ შემთხვევისთვის, რომელიც არის # # Match დირექტივის კრიტერიუმი. ბლოკად ითვლება ყველა ხაზი, რომელიც მოდის # # სტრიქონის შემდეგ კრიტერიუმით (Match - lines) მომდევნო შესატყვისი სტრიქონისთვის # # ან ფაილის ბოლოს. Match დირექტივის არგუმენტი არის კრიტერიუმების ერთი ან # # მრავალჯერადი წყვილი. ჩანაწერების შესაძლო ტიპები: # # მომხმარებელი # # ჯგუფი # # მასპინძელი # # მისამართი # # ჩანაწერები შეიძლება შეიცავდეს ერთეულ მნიშვნელობებს # # (მაგალითად, მომხმარებელი=მომხმარებელი) ან მრავალჯერადი მნიშვნელობები # # გამოყოფილი მძიმეებით (მომხმარებელი=user1). , მომხმარებელი 2). ssh_config ფაილის # # PATTERNS განყოფილებაში აღწერილი რეგულარული გამონათქვამები ასევე შეიძლება გამოყენებულ იქნას # #. # # მისამართის კრიტერიუმში ჩანაწერები შეიძლება შეიცავდეს მისამართებს CIDR # # (მისამართის/ნიღბის სიგრძე, მაგ. „192.0.2.0/24“ ან # # „3ffe:ffff::/32“) აღნიშვნით. აღსანიშნავია, რომ მოწოდებული # # ნიღბის სიგრძე უნდა ემთხვეოდეს მისამართს და ასევე # # გრძელი/მოკლე მისამართისთვის არ იმუშავებს. # # Match-ს შეუძლია გამოიყენოს მხოლოდ # # დირექტივების კონკრეტული ნაკრები დირექტივებად: # # AllowTcpForwarding # # ბანერი # # # ChrootDirectory # # ForceCommand # # GatewayPorts # # GSSAPIAავთენტიფიკაცია # # ჰოსტზე დაფუძნებული ავთენტიფიკაცია # # KbdInteractiveAuthentication #MaxsionAuthentication #KertoSutentication # პაროლი ავთენტიფიკაცია # # PermitOpen # # PermitRootLogin # # RhostsRSAA ავტორიზაცია # # RSAA ავტორიზაცია # # X11DisplayOffset # # X11 გადამისამართება # # X11UseLocalHost #

თქვენ შეგიძლიათ დააკოპიროთ ზემოთ მოცემული ტექსტი თქვენს საკუთარ sshd_config-ში და გამოიყენოთ იგი მოგვიანებით კონფიგურაციისთვის.

თავისთავად, არასწორად კონფიგურირებული SSH სერვერი არის უზარმაზარი დაუცველობა სისტემის უსაფრთხოებაში, რადგან შესაძლო თავდამსხმელს აქვს შესაძლებლობა მოიპოვოს სისტემაში თითქმის შეუზღუდავი წვდომა. გარდა ამისა, sshd-ს აქვს მრავალი დამატებითი სასარგებლო ვარიანტი, რომელიც მიზანშეწონილია ჩართოთ გამოყენებადობისა და უსაფრთხოების გასაუმჯობესებლად.

პორტი, ListenAddress და AddressFamily

ეს სამი პარამეტრი განსაზღვრავს რომელ პორტებსა და მისამართებზე მოუსმენს თქვენი სერვერი შემომავალ კავშირებს. პირველ რიგში, აზრი აქვს, თუ ეს შესაძლებელია, შეზღუდოთ დამუშავებული მისამართების ოჯახი რეალურად გამოყენებული, ანუ თუ იყენებთ მხოლოდ IPv4-ს, გამორთეთ IPv6 და პირიქით. ეს შეიძლება გაკეთდეს AddressFamily პარამეტრის გამოყენებით, მაგალითად (IPv4-ის დასაშვებად და IPv6-ის უარყოფისთვის):

AddressFamily inet

მეორეც, მიზანშეწონილია შეცვალოთ სტანდარტული პორტი (22), რომელზეც sshd უსმენს. ეს გამოწვეულია იმით, რომ მრავალი ქსელის სკანერი მუდმივად ცდილობს 22-ე პორტთან დაკავშირებას და მინიმუმ წვდომის მოპოვებას მათი მონაცემთა ბაზიდან უხეში ლოგინების/პაროლების გამოყენებით. მაშინაც კი, თუ პაროლის ავთენტიფიკაცია გამორთული გაქვთ, ეს მცდელობები ძლიერ ბლოკავს ჟურნალებს და (დიდი რაოდენობით) შეიძლება უარყოფითად იმოქმედოს ssh სერვერის სიჩქარეზე. თუ რაიმე მიზეზით არ გსურთ სტანდარტული პორტის შეცვლა, შეგიძლიათ გამოიყენოთ სხვადასხვა გარე საშუალებები უხეში ფორსერებთან საბრძოლველად, მაგალითად fail2ban და ჩაშენებული, როგორიცაა MaxStartups.
თქვენ შეგიძლიათ დააყენოთ პორტი როგორც აბსოლუტური მნიშვნელობა ყველა ინტერფეისისთვის პორტის დირექტივის გამოყენებით, ან როგორც კონკრეტული მნიშვნელობა თითოეული ინტერფეისისთვის ListenAddress დირექტივის გამოყენებით. მაგალითად:

პორტი 2002 წ

ListenAddress 192.168.0.1:2003 ListenAddress 192.168.1.1:2004

უარყოთ დისტანციური წვდომა სუპერმომხმარებლისთვის

ნაგულისხმევად, root წვდომა აკრძალულია პაროლით (გასაღებით შესაძლებელია) - PermitRootLogin ოფცია დაყენებულია პაროლის გარეშე. მაგრამ, იმის გათვალისწინებით, რომ Ubuntu-ში ნაგულისხმევად, სისტემის ინსტალაციის დროს დამატებულ მომხმარებელს აქვს შესაძლებლობა გადაჭრას ყველა ადმინისტრაციული ამოცანა sudo-ს საშუალებით, ssh-ის საშუალებით სისტემაში root წვდომის უნარის შექმნა არაგონივრული ჩანს (თუნდაც გასაღების ავტორიზაცია). რეკომენდებულია მისი სრული გამორთვა. ეს ვარიანტი, ან გამოიყენეთ იგი მხოლოდ იძულებითი ბრძანებების რეჟიმში. თქვენ შეგიძლიათ გამორთოთ root წვდომა ასე:

PermitRootLogin no

პაროლის ავთენტიფიკაცია

პაროლის ავთენტიფიკაცია, რომელიც ნაგულისხმევად არის დაშვებული, sshd-ში ავტორიზაციის პრაქტიკულად ყველაზე პრიმიტიული მეთოდია. ერთის მხრივ, ეს ამარტივებს ახალი მომხმარებლების კონფიგურაციას და კავშირს (მომხმარებელმა უნდა იცოდეს მხოლოდ მისი სისტემის შესვლა/პაროლი), მეორე მხრივ, პაროლის გამოცნობა ყოველთვის შესაძლებელია და მომხმარებლები ხშირად უგულებელყოფენ რთული და გრძელი პაროლების შექმნას. . სპეციალური ბოტები მუდმივად სკანირებენ ssh სერვერებს, რომლებიც ხელმისაწვდომია ინტერნეტიდან და ცდილობენ მათში შესვლას მათი მონაცემთა ბაზიდან უხეში ლოგინების/პაროლების გამოყენებით. მკაცრად რეკომენდირებულია არ გამოიყენოთ პაროლის ავთენტიფიკაცია. შეგიძლიათ გამორთოთ ეს ასე:

პაროლი ავთენტიფიკაციის ნომერი

თუ რაიმე მიზეზით კვლავ გსურთ პაროლის ავთენტიფიკაციის გამოყენება, დარწმუნდით, რომ ვერავინ შეძლებს ცარიელი პაროლით შესვლას. ამისათვის დააყენეთ PermitEmptyPasswords დირექტივა:

PermitEmptyPasswords no

პროტოკოლები SSH1 და SSH2

როგორც უკვე აღვნიშნეთ, sshd-ს შეუძლია იმუშაოს SSH1 და SSH2 პროტოკოლებთან. თუმცა, არასაიმედო SSH1-ის გამოყენება ძალზედ დაუშვებელია. თქვენ შეგიძლიათ აიძულოთ sshd იმუშაოს მხოლოდ SSH2 პროტოკოლით ასე:

ავტორიზაცია SSH2 RSA გასაღებებზე დაყრდნობით

ავტორიზაციის ყველაზე სასურველი მეთოდი არის ავტორიზაცია SSH2 RSA გასაღებებზე დაყრდნობით. ამ მეთოდით მომხმარებელი აგენერირებს წყვილ გასაღებს თავის მხარეს, რომელთაგან ერთი გასაღები საიდუმლოა, მეორე კი საჯარო. საჯარო გასაღები დაკოპირებულია სერვერზე და გამოიყენება მომხმარებლის ვინაობის დასადასტურებლად. დამატებითი ინფორმაციისთვის გასაღების წყვილის შექმნისა და სერვერზე მათი განთავსების შესახებ იხილეთ SSH კლიენტის აღწერა. თქვენ შეგიძლიათ ჩართოთ საჯარო გასაღების ავტორიზაცია შემდეგნაირად:

PubkeyAuthentication დიახ

სერვერმა უნდა იცოდეს სად უნდა მოძებნოს მომხმარებლის საჯარო გასაღები. ამისათვის გამოიყენება სპეციალური ფაილი authorized_keys. მისი სინტაქსი შეიძლება იყოს შემდეგი:

# კომენტარები იწერება მხოლოდ ახალ სტრიქონზე # ჩანაწერების ზოგადი გამოჩენა ავტორიზებული_გასაღებების ფაილში # [options] key_type (ssh-rsa ან ssh-dss) ძალიან_გრძელი_სტრიქონი_გაუგებარი ჩვეულებრივი ადამიანისთვის [login@host] ssh-rsa AAAAB3Nza...LiPk == [ელფოსტა დაცულია] from="*.sales.example.net,!pc.sales.example.net" ssh-rsa AAAAB2...19Q== [ელფოსტა დაცულია] command="dump /home",no-pty,no-port-forwarding ssh-dss AAAAC3...51R== example.net permitopen="192.0.2.1:80",permitopen="192.0.2.2:25" ssh -dss AAAAB5...21S== tunnel="0",command="sh /etc/netstart tun0" ssh-rsa AAAA...== [ელფოსტა დაცულია]

თქვენ შეგიძლიათ მიუთითოთ ერთი გაზიარებული ფაილი გასაღებებით, ან ერთი ფაილი თითოეული მომხმარებლისთვის. ეს უკანასკნელი მეთოდი უფრო მოსახერხებელი და უსაფრთხოა, რადგან თქვენ შეგიძლიათ, პირველ რიგში, მიუთითოთ გასაღების სხვადასხვა კომბინაციები თითოეული მომხმარებლისთვის და მეორეც, შეზღუდოთ წვდომა მომხმარებლის საჯარო გასაღებზე. თქვენ შეგიძლიათ მიუთითოთ ფაილი გასაღებებით AuthorizedKeysFile დირექტივის გამოყენებით:

AuthorizedKeysFile %h/.ssh/my_keys

სქემის მომხმარებლისთვის - ფაილი
ან

AuthorizedKeysFile /etc/ssh/authorized_keys

სქემისთვის საერთო ფაილით. ნაგულისხმევად, SSH კლიენტი ეძებს გასაღებებს ~/.ssh/authorized_keys ფაილში.

მეტი უსაფრთხოების შესახებ

დამატებითი პარამეტრები

მომხმარებლები და ჯგუფები.

თუ თქვენს სერვერზე ბევრი მომხმარებელი გყავთ „ცოცხალი“ და გსურთ დაუშვათ წვდომა ssh-ის საშუალებით მხოლოდ რამდენიმე მათგანს, შეგიძლიათ გამოიყენოთ DenyUsers, AllowUsers, DenyGroups და AllowGroups დირექტივები. ამ დირექტივების შესახებ დამატებითი ინფორმაციისთვის იხილეთ კომენტარები sshd_config მაგალითში.

კავშირის სტატუსის პარამეტრები

ნაგულისხმევად, კავშირის მდგომარეობის განსაზღვრის მეთოდებს შორის ჩართულია მხოლოდ TCP კავშირის შემოწმების მეთოდი - TCPKeepAlive, თუმცა, sshd-ს შეუძლია კავშირის მდგომარეობის განსაზღვრა უფრო მოსახერხებელი და უსაფრთხო გზებით. დამატებითი ინფორმაციისთვის იხილეთ შესაბამისი განყოფილება sshd_config მაგალითში.

შესრულება. MaxStartups

პორტის გადაგზავნა

X11 გადამისამართება

სერვერზე, /etc/ssh/sshd_config ფაილში დააყენეთ პარამეტრი (ჩართულია ნაგულისხმევად):

ForwardX11 დიახ

კლიენტზე დააყენეთ პარამეტრები /etc/ssh/ssh_config ფაილში (ნაგულისხმევად გამორთულია):

ForwardAgent დიახ ForwardX11 დიახ

თქვენ შეგიძლიათ გაუშვათ იგი კლიენტზე ასე: ssh yurauname@serverip firefox. ან ჯერ გადადით ssh yurauname@serverip-ზე და შემდეგ გაუშვით, მაგალითად, sudo synaptic.

SFTP

sshd-ს ნაგულისხმევად აქვს ჩაშენებული SFTP სერვერი. SFTP (SSH File Transfer Protocol) - SSH პროტოკოლი ფაილების გადასატანად. იგი შექმნილია ფაილების სხვა ოპერაციების დასაკოპირებლად და შესასრულებლად საიმედო და უსაფრთხო კავშირით. როგორც წესი, SSH2 პროტოკოლი გამოიყენება როგორც ძირითადი პროტოკოლი, რომელიც უზრუნველყოფს კავშირს. SFTP მხარდაჭერის გასააქტიურებლად, დაამატეთ ხაზი sshd_config

ქვესისტემა sftp /usr/lib/openssh/sftp-server

ნაგულისხმევად, SFTP მხარდაჭერა ჩართულია.

კრიტერიუმების გამოყენება. მატჩის დირექტივა

SSH კლიენტის დაყენება

გასაღების გამოყენებით შესვლა ითვლება ყველაზე უსაფრთხოდ და უმეტეს შემთხვევაში ეს ფუნქცია ჩართულია სერვერის მხარეს, ამიტომ მისი გამოყენებისთვის სუპერმომხმარებლის უფლებები არ არის საჭირო. კლიენტის მანქანაზე ჩვენ ვქმნით გასაღებს:

ssh-keygen -t rsa

ჩვენ მოგვთხოვენ შეიყვანოთ პაროლი გასაღების ფაილის დასაცავად (გამოდის, რომ ეს სასარგებლოა, თუ ფაილი არასწორ ხელში მოხვდება). თუ ჩვენ ვაპირებთ SSH-ის საშუალებით სკრიპტების შესრულებას, მაშინ მას ცარიელი ვტოვებთ. ჩვენ გადავცემთ საჯარო გასაღებს სერვერზე ბრძანებით

Ssh-copy-id -i ~/ .ssh/ id_rsa.pub user@ სერვერი

ესე იგი, შეგიძლია შემოხვიდე.

როდესაც ssh მუშაობს არასტანდარტულ პორტზე:

Ssh-copy-id -i ~/ .ssh/ id_rsa.pub "-p port user@server"

თუ მოხდა შეცდომა: ცუდი პორტი "umask 077; test -d .ssh || mkdir .ssh ; cat >> .ssh/authorized_keys"

სცადეთ პარამეტრების ბრჭყალებში ჩასმა:

Ssh-copy-id "-i /home/user/.ssh/id_rsa.pub "-p port user@server""

მოსახერხებელია ეკრანის უტილიტის გამოყენება დისტანციურ სისტემასთან დაკავშირებისას.

დისტანციური ssh კატალოგის დაყენება Nautilus-ში

დისტანციური დირექტორიას დამონტაჟება sshfs-ის გამოყენებით

დისტანციური კატალოგის დამონტაჟება ადგილობრივ დირექტორიაში

sshfs user@ hostingserver.ru:/ home/ userdir ~/ sshfsdir

დემონტაჟი

Fusermount -u ~/ sshsfdir

SSH მეტსახელები

როდესაც იყენებთ რამდენიმე სერვერს სხვადასხვა წვდომის პარამეტრით (არასტანდარტული პორტი, გრძელი ჰოსტის სახელი, შესვლა ლოკალურის გარდა და ა.შ.), ზოგჯერ დამღლელია ყველა კავშირის პარამეტრის ხელახლა შეყვანა ყოველ ჯერზე. ამის გასაადვილებლად, შეგიძლიათ გამოიყენოთ მეტსახელები.

პარამეტრები ინახება ~/.ssh/config-ში ერთი მომხმარებლისთვის და /etc/ssh/ssh_config გლობალურად ყველა მომხმარებლისთვის.

კონფიგურაციის მაგალითი. შეიძლება აღწერილი იყოს მრავალი სერვერი. დამატებითი დეტალები ში კაცი ssh_config(არ უნდა აგვერიოს sshd_config)

ჰოსტის AliasName # თვითნებური ჰოსტის სახელი HostName 1.2.3.4 # შეგიძლიათ მიუთითოთ IP და ჰოსტის სახელი (თუ DNS მუშაობს) მომხმარებელი YourUserName # თუ მომხმარებელი არ ემთხვევა ადგილობრივ მომხმარებელს Port YourSSHPort # თუ არასტანდარტული პორტია

ამის შემდეგ შეგიძლიათ სერვერთან დაკავშირება ბრძანებით

ssh AliasName

ssh-აგენტი

კავშირის პრობლემების დიაგნოსტიკა

    კავშირის ჟურნალის ანალიზი:

ssh -vvv user@ მასპინძელი

    კლიენტისა და სერვერის კონფიგურაციის ფაილების ანალიზი.

კონფიგურაციის ფაილების ადგილმდებარეობა შეგიძლიათ იხილოთ

კაცი სშ კაცო სშდ

ჭკვიანი ბარათების გამოყენება

1. სერთიფიკატის შექმნა და საჯარო გასაღების ექსპორტი, ისევე როგორც კლიენტის ნაწილი Windows + Putty SC-ზე, აღწერილია ვებგვერდზე: http://habrahabr.ru/post/88540/ იქ აღწერილი Key Manager დანამატი ხელმისაწვდომია მხოლოდ Firefox-ის ძველ ვერსიებში. ტესტირებულია 3.5 ვერსიაზე Windows-ისთვის. პირდაპირი ბმული დანამატზე: https://addons.mozilla.org/ru/firefox/addon/key-manager/

2. სერვერის მომზადება. თქვენ უნდა დარწმუნდეთ, რომ თქვენი sshd კონფიგურაცია იძლევა ავტორიზაციას საჯარო გასაღებების გამოყენებით. ამისათვის თქვენ უნდა მიუთითოთ "PubkeyAuthentication" პარამეტრის მნიშვნელობა "დიახ" "sshd_config" ფაილში.

შემდეგ ჩვენ ვამატებთ ადრე მიღებულ საჯარო გასაღებს (ერთ სტრიქონში) ფაილს „~/.ssh/authorized_keys“. გთხოვთ, გაითვალისწინოთ, რომ „.ssh/authorized_keys“ ფაილი განთავსებულია მომხმარებლის მთავარ დირექტორიაში, რომელიც შემდეგ შესული იქნება საჯარო გასაღების გამოყენებით.<путь к библиотеке>

3. კლიენტის ნაწილი Linux-ზე. მოგიწევთ OpenSSH პაკეტის აღდგენა პარამეტრების გარეშე. რეკომენდირებულია მხოლოდ დირექტორიაში პრეფიქსების მითითება, მაგალითად –prefix=/usr. თქვენ ასევე უნდა გაითვალისწინოთ, რომ კონფიგურაციის ფაილები იქნება /usr/etc. სანამ დაიწყებთ, გჭირდებათ შემდეგი პაკეტები: opensc-lite-devel, zlib-devel, openssl-devel. დააინსტალირეთ ჭკვიანი ბარათის დრაივერი. მოხერხებულობისთვის, ssh_config კონფიგურაციაში (არ უნდა აგვერიოს sshd_config-ში), მიუთითეთ გზა pkcs ბიბლიოთეკისკენ: PKCS11Provider=

4. კლიენტზე გაუშვით ssh user@host თუ სმარტ ბარათი (token) დაკავშირებულია, თქვენ მოგეთხოვებათ პაროლი და შეხვალთ SSH სესიაში.

შესაძლო პრობლემები გამოყენების დროს

კლავიშების ჩვეულებრივი კომბინაცია Ctrl + S, რომელიც გამოიყენება ბევრ რედაქტორში კორექტირების შესანახად, ტერმინალში მუშაობისას ssh სერვერთან, გამოიწვევს XOFF ბრძანების შესრულებას, რომელიც ზედაპირულად წააგავს სესიის გაყინვას. თუმცა ეს სიმართლეს არ შეესაბამება. სერვერი აგრძელებს შეყვანის სიმბოლოების და ბრძანებების მიღებას, მაგრამ არ აჩვენებს მათ ეკრანზე. ამ სიტუაციიდან თავის დასაღწევად, უბრალოდ გამოიყენეთ კომბინაცია Ctrl + Q, რითაც ჩართეთ XON რეჟიმი უკან.

ბმულები



. ოლეგ შეინის კომპიუტერული კლუბი.

გაგზავნა

შეატყობინეთ შეცდომას