[LINUX] Spielen Sie den Server mit zwei PCs

Motivation

Der Unterschied zwischen einem Personal Computer und einem Server besteht hauptsächlich in den Spezifikationen und dem Verwendungszweck, und die Grenzen sind mehrdeutiger als erwartet. Tatsächlich können Sie Ihren Computer so verwenden, als wäre er ein Server in einem anderen Netzwerk. Simulieren wir also die Arbeit des Remote-Servers, indem wir mit zwei Computern zu Hause eine SSH-Verbindung von einem zum anderen herstellen.

Dinge vorzubereiten / voraussetzen

--Verbindungsquell-PC: Diejenigen, die SSH verwenden können. Das Betriebssystem ist optional. --Destination PC: Ubuntu oder MacBook. Andere Linux-Distributionen haben andere Befehle. Im Fall von Windows sind die Einstellungen unterschiedlich, daher werde ich sie weglassen.

Überprüfen Sie die IP des Verbindungsziel-PCs

Für Ubuntu

# server ubuntu
$ ip a
...
inet 192.168.X.Y/24 ...
...

Für MacBook

# server macbook
$ ifconfig
...
inet 192.168.X.Y netmask 0xffffff00 ...
...

Der obige Befehl zeigt die private IP des verbundenen Netzwerks an. Normalerweise im Format "192.168.X.Y", wobei X und Y Zahlen von 0 bis 255 sind.

Informationen zur IP-Adresse

Die IP-Adresse ist eine 32-Bit-Nummer. Wenn Sie sie durch eine durch 8 Bit getrennte Nummer darstellen, wird sie zu einer IP-Adresse, die Sie häufig sehen. Da 8 Bits Zahlen von 0 bis 255 darstellen, sind 4 Zahlen in diesem Bereich die IP-Adresse.

Wenn es ein / 24 gibt, bedeutet dies, dass die ersten 24 Bits der IP-Adresse innerhalb der Gruppe festgelegt sind. Das heißt, die ersten drei Zahlen sind fest und die letzten Zahlen sind unterschiedlich. netmask 0xffffff00 drückt dasselbe aus. Das heißt, wenn das feste Bit hexadezimal geschrieben ist, so dass das feste Bit 1 und der variable Teil 0 ist, ist dies der Fall.

Ich war mir nicht sicher, warum private Adressen normalerweise mit "192.168" beginnen.

Starten Sie den SSH-Dienst auf der Serverseite

Im Ausgangszustand ist eine SSH-Verbindung von außen nicht möglich. Lassen Sie es uns mit "Ping" überprüfen.

#Verbindungsquelle
$ ping 192.168.X.Y
Request timeout for icmp_seq 0
...

Geben Sie für "X" und "Y" die Werte ein, die Sie zuvor bestätigt haben. Dieses Ergebnis bedeutet, dass Sie nicht auf die IP zugreifen können.

Versuchen Sie daher, den SSH-Dienst am Verbindungsziel zu starten.

Für Ubuntu

#Stellen Sie eine Verbindung zu Ubuntu her
$ sudo apt-get install -y openssh-server

Wenn Sie "openssh-server" installieren, wird der SSH-Dienst automatisch gestartet. Sie können dies mit dem folgenden Befehl überprüfen.

#Stellen Sie eine Verbindung zu Ubuntu her
$ sudo systemctl status ssh
...
Active: active (running)
...

Der SSH-Dienst wird beim nächsten Start Ihres PCs automatisch gestartet. Wenn Sie den automatischen Start stoppen möchten, scheint es die folgende Methode zu geben (Referenz) ..

  1. Benennen Sie die Datei ssh.conf mit dem folgenden Befehl um (stellen Sie den Namen für den automatischen Start wieder her).

    $ sudo mv /etc/init/ssh.conf /etc/init/ssh.conf.disabled
    
  2. Kommentieren Sie den Teil zum automatischen Start in / etc / init / ssh.conf aus

...
#start on filesystem or runlevel [2345] 
...

Für MacBook

Wählen Sie unter Systemeinstellungen> Freigabe "Remote-Anmeldung" aus und wählen Sie einen zugänglichen Benutzer aus (Referenz. -access-your-mac-mchlp1066 / mac)). Ein Bildschirm wie der folgende. Es lehrt höflich SSH-Befehle. Sharing.png

Versuchen Sie es jetzt erneut mit "Ping".

$ ping 192.168.X.Y
64 bytes from 192.168.10.224: icmp_seq=0 ttl=64 time=108.883 ms
...

Wenn alles gut geht, können Sie den Zugriff auf die IP sehen.

Verbinden Sie sich mit SSH

Die Verbindungsmethode ist dieselbe wie bei einem normalen Server.

#Verbindungsquelle
$ ssh <user>@192.168.X.Y

Da normale PCs über ein Passwort verfügen, werden Sie danach häufig nach Ihrem Passwort gefragt. Sie sollten in der Lage sein, eine Verbindung herzustellen, indem Sie das Anmeldekennwort eingeben, das Sie normalerweise am Verbindungsziel verwenden.

Richten Sie die Firewall ein

Beim Starten des SSH-Dienstes ist das Kennwort der einzige Schutz vor unbefugtem Zugriff. Durch Festlegen einer Firewall am Verbindungsziel können Sie die Zugriffsmethode einschränken.

Für Ubuntu

Überprüfen Sie den aktuellen Status der Firewall.

$ sudo ufw status
Status: inactive

"inaktiv" bedeutet, dass die Firewall nicht konfiguriert ist.

Erstens ist der Zugriff grundsätzlich verboten und nur SSH ist zulässig.

$ sudo ufw default deny
$ sudo ufw allow ssh
$ sudo ufw enable

Dies verhindert den Zugriff auf etwas anderes als SSH (Port 22). Sie können dies mit dem folgenden Befehl überprüfen.

$ sudo ufw status
Status: active

To                         Action      From
--                         ------      ----
22/tcp                     ALLOW       Anywhere      
22/tcp (v6)                ALLOW       Anywhere (v6)

Um die Sicherheit zu erhöhen, können Sie die Quelle auf dasselbe Netzwerksegment beschränken.

$ sudo ufw reset
$ sudo ufw default deny
$ sudo ufw allow from 192.168.X.0/24 to any port ssh
$ sudo ufw enable

Ersetzen Sie "X" durch die Nummer der bestätigten IP-Adresse. / 24 erlaubt den Zugriff nur von Netzwerken, in denen die ersten 24 Bits (drei Zahlen) dieser IP übereinstimmen.

$ sudo ufw status
Status: active

To                         Action      From
--                         ------      ----
22/tcp                     ALLOW       192.168.10.0/24

Für MacBook

Sie kann auf der Registerkarte "Firewall" unter Systemeinstellungen> Sicherheit und Datenschutz festgelegt werden. Wenn Sie den SSH-Zugriff zulassen, wird anscheinend automatisch nur auf den SSH-Port zugegriffen. Screen Shot 2020-07-05 at 14.23.55.png

Recommended Posts

Spielen Sie den Server mit zwei PCs
Erstellen eines Flask-Servers mit Docker
Erreichen Sie eine Warteschlange mit zwei Stapeln
Ich habe mit Razpai einen Webserver erstellt, um Anime zu schauen
Ich habe versucht, mit einem Remote-Server über Socket-Kommunikation mit Python zu kommunizieren.
So fügen Sie ein Paket mit PyCharm hinzu
Richten Sie mit Docker einen Samba-Server ein
Senden Sie E-Mails mit mailx an einen mit Python eingerichteten Dummy-SMTP-Server.
Nur 8 Techniken, um sich als Datenwissenschaftler auszugeben
Hinweise zum Erstellen von Zahlen, die mit matplotlib in Zeitschriften veröffentlicht werden können
Eine verwirrende Geschichte mit zwei Möglichkeiten, XGBoost in Python + zu implementieren
Als ich mit VScode eine Verbindung zu einem entfernten Jupyter-Server herstellte, war dieser entfernt, aber lokal.
SSH-Anmeldung am Zielserver von Windows mit einem Klick auf eine Verknüpfung
[Python] So erstellen Sie eine lokale Webserverumgebung mit SimpleHTTPServer und CGIHTTPServer
Starten Sie einen temporären http-Server lokal mit Pytest
Senden Sie eine Nachricht von Slack an einen Python-Server
Erstellen Sie einen lokalen Server mit einem einzeiligen Befehl [Mac]
Lesen einer CSV-Datei mit Python 2/3
Melden Sie sich mit SSH bei einem Remote-Server an
Richten Sie einen einfachen HTTPS-Server mit Asyncio ein
Senden Sie eine Nachricht mit Python an LINE (LINE Notify)
Ein Memorandum, um WebDAV nur mit Nginx zu erstellen
ODBC-Verbindung zu FileMaker 11 Server Advanced mit Python 3
So entwickeln Sie eine Cart-App mit Django
So erstellen Sie ein Wörterbuch mit einer hierarchischen Struktur.
Ich möchte ein Spiel mit Python machen
Starten Sie mit Docker einen einfachen Python-Webserver
Ich möchte OREMO mit setParam sein!
Machen Sie einen Chat-Bot und üben Sie, beliebt zu sein.
Versuchen Sie, in Python einen "Entschlüsselungs" -Code zu erstellen
Entscheide dich für einen Laborauftrag mit Python (Fiktion)
Richten Sie einen lokalen Server mit Go-File-Download ein.
Schritte zum Erstellen eines Twitter-Bots mit Python
Starten Sie einen Webserver mit Python und Flask
Speichern Sie das Objekt in einer Datei mit pickle
Versuchen Sie, mit Python eine Diedergruppe zu bilden
So richten Sie einen lokalen Entwicklungsserver ein
Verfahren zur Erstellung plattformübergreifender Apps mit kivy
AWS-Schrittfunktionen zum Lernen anhand eines Beispiels
Hängen Sie das Verzeichnis eines anderen Servers mit sshfs ein
[Telewa gewidmet! ] Ich betreibe einen PC mit einer Webkamera.
Ich möchte mit Python in eine Datei schreiben
Erstellen Sie in Tornado einen HTTP-Server (Hello World)
Zubu Amateur will Python starten
Verwenden Sie tkinter, um den Ausgabecode in Python als "A und vorgeben, B zu sein" zu verschieben
Konvertieren Sie Bilder aus dem FlyCapture SDK in ein Formular, das mit openCV verwendet werden kann
[Mac] Ich möchte einen einfachen HTTP-Server erstellen, auf dem CGI mit Python ausgeführt wird
Ich habe versucht, automatisch die Zeichenfolge zu generieren, die mit Python in Mr. Adjustment eingegeben werden soll
[Go language] Seien Sie vorsichtig, wenn Sie einen Server mit mux + cors + alice erstellen. Besonders darüber, wovon ich in Bezug auf CORS süchtig war.
So konvertieren / wiederherstellen Sie einen String mit [] in Python
Memo mit Python mit HiveServer2 von EMR verbunden
[Python] Wie zeichnet man mit Matplotlib ein Liniendiagramm?
Ich möchte mit einem Knopf am Kolben übergehen
Lassen Sie uns ein Befehls-Standby-Tool mit Python erstellen
Python Ver. Einführung in WebPay mit ein wenig Code
Ich habe mit Play with Docker einen gebrauchsfertigen Syslog-Server erstellt
So erstellen Sie ein Untermenü mit dem Plug-In [Blender]
Ich möchte mit verstärkendem Lernen einen Berg besteigen