Σύνδεση σε Windows μέσω SSH όπως το Linux

Πάντα με απογοήτευε η σύνδεση σε μηχανήματα Windows. Όχι, δεν είμαι ούτε αντίπαλος ούτε υποστηρικτής της Microsoft και των προϊόντων της. Κάθε προϊόν υπάρχει για τον δικό του σκοπό, αλλά δεν πρόκειται για αυτό.
Ήταν πάντα εξαιρετικά επώδυνο για μένα να συνδέομαι σε διακομιστές Windows, επειδή αυτές οι συνδέσεις είτε ρυθμίζονται σε ένα μέρος (γεια σου WinRM με HTTPS) είτε δεν λειτουργούν πολύ σταθερά (γεια σου RDP σε εικονικές μηχανές στο εξωτερικό).

Επομένως, έχοντας κατά λάθος συναντήσει το έργο Win32-OpenSSH, αποφάσισα να μοιραστώ την εμπειρία εγκατάστασης μου. Ίσως αυτό το εργαλείο θα σώσει κάποιον από πολλά νεύρα.

Σύνδεση σε Windows μέσω SSH όπως το Linux

Επιλογές εγκατάστασης:

  1. Μη αυτόματα
  2. Μέσω πακέτο Σοκολάτα
  3. Μέσω του Ansible, για παράδειγμα ρόλος jborean93.win_openssh

Στη συνέχεια, θα μιλήσω για το πρώτο σημείο, αφού όλα είναι λίγο πολύ ξεκάθαρα με τα υπόλοιπα.

Θα ήθελα να σημειώσω ότι αυτό το έργο βρίσκεται ακόμα στο στάδιο beta, επομένως δεν συνιστάται η χρήση του στην παραγωγή.

Λοιπόν, κατεβάστε την τελευταία έκδοση, αυτή τη στιγμή 7.9.0.0p1-beta. Υπάρχουν εκδόσεις για συστήματα 32 και 64 bit.

Αποσυσκευάστε μέσα C:Program FilesOpenSSH
Ένα υποχρεωτικό σημείο για σωστή λειτουργία: μόνο το ΣΥΣΤΗΜΑ και την ομάδα διαχειριστή.

Εγκατάσταση υπηρεσιών με χρήση σεναρίου install-sshd.ps1 που βρίσκεται σε αυτόν τον κατάλογο

powershell.exe -ExecutionPolicy Bypass -File install-sshd.ps1

Επιτρέπονται οι εισερχόμενες συνδέσεις στη θύρα 22:

New-NetFirewallRule -Name sshd -DisplayName 'OpenSSH Server (sshd)' -Enabled True -Direction Inbound -Protocol TCP -Action Allow -LocalPort 22

Διευκρίνιση: applet Νέος-NetFirewallRule χρησιμοποιείται στον Windows Server 2012 και μεταγενέστερη έκδοση. Στα παλαιότερα συστήματα (ή στην επιφάνεια εργασίας) μπορείτε να χρησιμοποιήσετε την εντολή:

netsh advfirewall firewall add rule name=sshd dir=in action=allow protocol=TCP localport=22

Ας ξεκινήσουμε την υπηρεσία:

net start sshd

Κατά την εκκίνηση, τα κλειδιά κεντρικού υπολογιστή θα δημιουργηθούν αυτόματα (εάν λείπουν). %programdata%ssh

Μπορούμε να ενεργοποιήσουμε την αυτόματη εκκίνηση της υπηρεσίας όταν το σύστημα ξεκινά με την εντολή:

Set-Service sshd -StartupType Automatic

Μπορείτε επίσης να αλλάξετε το προεπιλεγμένο κέλυφος εντολών (μετά την εγκατάσταση, η προεπιλογή είναι cmd):

New-ItemProperty -Path "HKLM:SOFTWAREOpenSSH" -Name DefaultShell -Value "C:WindowsSystem32WindowsPowerShellv1.0powershell.exe" -PropertyType String -Force

Διευκρίνιση: Πρέπει να καθορίσετε μια απόλυτη διαδρομή.

Ποιο είναι το επόμενο;

Και μετά το ρυθμίσαμε sshd_config, που θα τοποθετήσουμε Γ: Δεδομένα προγράμματος. Για παράδειγμα:

PasswordAuthentication no
PubkeyAuthentication yes

Και δημιουργήστε έναν κατάλογο στο φάκελο χρήστη .ssh, και σε αυτό το αρχείο authorized_keys. Σημειώνουμε εκεί τα δημόσια κλειδιά.

Σημαντική διευκρίνιση: μόνο ο χρήστης στον κατάλογο του οποίου βρίσκεται το αρχείο θα πρέπει να έχει το δικαίωμα εγγραφής σε αυτό το αρχείο.

Αλλά εάν αντιμετωπίζετε προβλήματα με αυτό, μπορείτε πάντα να απενεργοποιήσετε τον έλεγχο δικαιωμάτων στη διαμόρφωση:

StrictModes no

Παρεμπιπτόντως, στο C:Program FilesOpenSSH υπάρχουν 2 σενάρια (FixHostFilePermissions.ps1, FixUserFilePermissions.ps1), τα οποία θα έπρεπε, αλλά δεν είναι υποχρεωμένα να καθορίζουν δικαιώματα, συμπεριλαμβανομένης της authorized_keys, αλλά για κάποιο λόγο δεν εγγράφονται.

Μην ξεχάσετε να επανεκκινήσετε την υπηρεσία sshd μετά για να εφαρμόσετε τις αλλαγές.

ru-mbp-666:infrastructure$ ssh [email protected] -i ~/.ssh/id_rsa
Windows PowerShell
Copyright (C) 2016 Microsoft Corporation. All rights reserved.

PS C:UsersAdministrator> Get-Host


Name             : ConsoleHost
Version          : 5.1.14393.2791
InstanceId       : 653210bd-6f58-445e-80a0-66f66666f6f6
UI               : System.Management.Automation.Internal.Host.InternalHostUserInterface
CurrentCulture   : en-US
CurrentUICulture : en-US
PrivateData      : Microsoft.PowerShell.ConsoleHost+ConsoleColorProxy
DebuggerEnabled  : True
IsRunspacePushed : False
Runspace         : System.Management.Automation.Runspaces.LocalRunspace

PS C:UsersAdministrator>

Υποκειμενικά πλεονεκτήματα/μειονεκτήματα.

Πλεονεκτήματα:

  • Τυπική προσέγγιση για τη σύνδεση με διακομιστές.
    Όταν υπάρχουν λίγα μηχανήματα Windows, είναι πολύ άβολο όταν:
    Έτσι, εδώ περνάμε μέσω ssh, και εδώ χρησιμοποιούμε rdp,
    και γενικά, η καλύτερη πρακτική με τους προμαχώνες είναι πρώτα μια σήραγγα ssh και το RDP μέσω αυτού.
  • Εύκολο στη ρύθμιση
    Νομίζω ότι αυτό είναι προφανές.
  • Ταχύτητα σύνδεσης και εργασία με απομακρυσμένο μηχάνημα
    Δεν υπάρχει γραφικό κέλυφος, εξοικονομώντας τόσο πόρους διακομιστή όσο και την ποσότητα των μεταδιδόμενων δεδομένων.

Μειονεκτήματα:

  • Δεν αντικαθιστά πλήρως το RDP.
    Δεν γίνονται όλα από την κονσόλα, αλίμονο. Εννοώ περιπτώσεις όπου απαιτείται GUI.

Υλικά που χρησιμοποιούνται στο άρθρο:
Σύνδεσμος με το ίδιο το έργο
Οι επιλογές εγκατάστασης αντιγράφονται χωρίς ντροπή Απαιτούμενα έγγραφα.

Πηγή: www.habr.com

Προσθέστε ένα σχόλιο