[RUBY] Verbinden Sie den Port mit SSH, um Dateien zu senden und zu empfangen

Umgebung

Ubuntu 16.04.7 LTS (Xenial Xerus) ruby 2.5.0p0

Was willst du tun

Führen Sie nach dem Übertragen des Ruby-Programms auf den durch Port Forward angegebenen Server das Ruby-Programm auf dem Übertragungszielserver aus und geben Sie die CSV-Datei standardmäßig aus. Bringen Sie dann die Standard-Ausgabe-CSV-Datei in Ihre lokale Umgebung.

Code

def ssh_connect

    begin
     #Dateien übertragen
        _cmd = system('scp -P 54322 -i /home/.ssh/id_rsa /home/syori.rb [email protected]:/home')

        #Port Forward-Einstellungen
        Net::SSH.start(
            '153.153.xx.xx',
            'username',
            :keys => '/home/.ssh/id_rsa',
            :port => 54322
            ) do |_a|
                _a.forward.local(2222,'192.168.xx.xx', 54323)
                _a.exec!('ruby syori.rb')
              end

        #Holen Sie sich die Datei
        _cmd = system('scp -P 54322 -i /home/.ssh/id_rsa [email protected]:/home/users.csv /home')

    rescue => ex
        print "***** " + self.class.name.to_s + "." + __method__.to_s + " *****\n"
        print(ex.class," -> ",ex.message)
    end
end

Kommentar

system Eine Methode, die Linux-Befehle in Ruby ausgibt. Der Rückgabewert ist ture / false.

scp Dies ist ein Befehl (Protokoll) zum Übertragen von Dateien. Wenn es um die Dateiübertragung geht, wurde in der Vergangenheit häufig FTP verwendet. Da FTP die Kontoinformationen beim Anmelden jedoch nicht verschlüsseln kann, verwenden Sie scp, das standardmäßig mit der SSH-Funktion ausgestattet ist, um die Sicherheit zu verbessern. Ist die Basis.

scp Optionen

-P Geben Sie die Portnummer an. Die SSH-Portnummer 22 wird als bekannte Portnummer angegeben. Wenn es sich jedoch um einen nach außen geöffneten Server handelt, kann er meiner Meinung nach angepasst werden, um seltsame Angriffe zu verhindern. Geben Sie die SSH-Portnummer des Servers an, zu dem eine Verbindung hergestellt werden soll.

-i Legen Sie den absoluten Pfad auf den Pfad fest, in dem der für die SSH-Kommunikation verwendete öffentliche Schlüssel gespeichert ist. Meistens in Ihrem Haus .ssh.

Legen Sie den Namen der zu übertragenden Datei mit einem absoluten Pfad fest. Geben Sie zum Angeben des Übertragungsziels den Servernamen des Übertragungsziels an: das Verzeichnis des Übertragungsziels mit einem absoluten Pfad.

Erläuterung der Portweiterleitung

Net::SSH.start(
Quell-IP-Adresse weiterleiten, 
Benutzername weiterleiten,
     :keys =>Absoluter Pfad des privaten Schlüssels der Verbindungsquelle,
     :port =>Portnummer der Verbindungsquelle
     ) do |_a|
         _a.forward.local(Quellportnummer weiterleiten (alles ist in Ordnung),
                  'IP-Adresse des Portweiterleitungsziels', 
Zielportnummer weiterleiten)
         _a.exec!('Der Befehl, den Sie am Verbindungsziel ausführen möchten')
     end

Recommended Posts

Verbinden Sie den Port mit SSH, um Dateien zu senden und zu empfangen
Stellen Sie über die SSH-Portweiterleitung eine Verbindung vom lokalen zum Remote-Host JMX her
Swift Network.framework Study 20200319 "Empfangen und Senden"
Ziehen Sie Dateien mit JavaFX per Drag & Drop
Installieren Sie Ubuntu Server 20.04 in VirtualBox auf einem Mac und stellen Sie eine SSH-Verbindung her
[Anfänger] Laden Sie Bilder und Dateien mit Spring hoch [Autark]
[Review] Lesen und Schreiben von Dateien mit Java (JDK6)
Erstellen Sie in CentOS8.2 einen privaten / öffentlichen Schlüssel und stellen Sie mit VS Code eine Verbindung zu SSH her