Connessioni multihock SSH con proxy di modalità netcat

Dal momento che OpenSSH 5.4 esiste una nuova funzionalità chiamata modalità natcat, che consente di associare STDIN e STDOUT del client SSH locale a una port TCP accessibile tramite il server remoto SSH. Questa modalità è abilitata chiamando semplicemente ssh -W [HOST]:[PORT]

In teoria, questo dovrebbe essere l'ideale per l'utilizzo nell'impostazione di ProxyCommand nelle configurazioni SSH per host, precedentemente utilizzata con il command nc (netcat). ProxyCommand consente di configurare una macchina come proxy tra la macchina locale e il server SSH di destinazione, ad esempio se il server SSH di destinazione è nascosto dietro un firewall.

  • Dovrebbero i siti web vivere in / var / or / usr / secondo l'uso consigliato?
  • Che cos'è un equivalente moderno per la sassembly?
  • Il contenitore LXC può accedere solo all'host tramite il ponte
  • Distriggerszione a distanza da Windows a Linux
  • distriggersre l'authentication SSH nello stesso dominio, se lo stesso utente
  • Come eseguire un command per each file in una struttura di directory profonda, in modo ricorsivo?
  • Ora il problema è che, invece di lavorare, lancia un messaggio di errore criptico in faccia:

     Bad packet length 1397966893. Disconnecting: Packet corrupt 

    Ecco un estratto del mio ~/.ssh/config :

     Host * Protocol 2 ControlMaster auto ControlPath ~/.ssh/cm_socket/%r@%h:%p ControlPersist 4h Host proxy-host proxy-host.my-domain.tld HostName proxy-host.my-domain.tld ForwardAgent yes Host target-server target-server.my-domain.tld HostName target-server.my-domain.tld ProxyCommand ssh -W %h:%p proxy-host ForwardAgent yes 

    Come potete vedere qui, sto utilizzando la funzionalità ControlMaster in modo da non aprire più di una connessione SSH per host.

    La macchina client che ho provato con questo è un Ubuntu 11.10 (x86_64) e sia il proxy host che il server di destinazione sono le macchine Debian Wheezy Beta 3 (x86_64).

    L'errore accade quando chiamo ssh target-server . Quando lo chiamo con la bandiera -vvv , ecco quello che ottengo ulteriormente:

     OpenSSH_5.8p1 Debian-7ubuntu1, OpenSSL 1.0.0e 6 Sep 2011 debug1: Reading configuration data /home/aef/.ssh/config debug1: Applying options for * debug1: Applying options for target-server.my-domain.tld debug1: Reading configuration data /etc/ssh/ssh_config debug1: Applying options for * debug1: Applying options for target-server.my-domain.tld debug1: auto-mux: Trying existing master debug1: Control socket "/home/aef/.ssh/cm_socket/aef@192.0.2.195:22" does not exist debug2: ssh_connect: needpriv 0 debug1: Executing proxy command: exec ssh -W 192.0.2.195:22 gateway-host.my-domain.tld debug1: identity file /home/aef/.ssh/id_rsa type -1 debug1: identity file /home/aef/.ssh/id_rsa-cert type -1 debug1: identity file /home/aef/.ssh/id_dsa type -1 debug1: identity file /home/aef/.ssh/id_dsa-cert type -1 debug1: identity file /home/aef/.ssh/id_ecdsa type -1 debug1: identity file /home/aef/.ssh/id_ecdsa-cert type -1 debug1: permanently_drop_suid: 1000 Host key fingerprint is 1a:2b:3c:4d:5e:6f:7a:8b:9c:ad:be:cf:de:ed:fe:ef +--[ECDSA 521]---+ | | | | | | | | | | | | | | | | | | +-----------------+ debug1: Remote protocol version 2.0, remote software version OpenSSH_6.0p1 Debian-3 debug1: match: OpenSSH_6.0p1 Debian-3 pat OpenSSH* debug1: Enabling compatibility mode for protocol 2.0 debug1: Local version string SSH-2.0-OpenSSH_5.8p1 Debian-7ubuntu1 debug2: fd 5 setting O_NONBLOCK debug2: fd 4 setting O_NONBLOCK debug3: load_hostkeys: loading entries for host "192.0.2.195" from file "/home/aef/.ssh/known_hosts" debug3: load_hostkeys: loaded 0 keys debug3: load_hostkeys: loading entries for host "192.0.2.195" from file "/etc/ssh/ssh_known_hosts" debug3: load_hostkeys: found key type ECDSA in file /etc/ssh/ssh_known_hosts:49 debug3: load_hostkeys: found key type RSA in file /etc/ssh/ssh_known_hosts:50 debug3: load_hostkeys: loaded 2 keys debug3: order_hostkeyalgs: prefer hostkeyalgs: ecdsa-sha2-nistp256-cert-v01@openssh.com,ecdsa-sha2-nistp384-cert-v01@openssh.com,ecdsa-sha2-nistp521-cert-v01@openssh.com,ssh-rsa-cert-v01@openssh.com,ssh-rsa-cert-v00@openssh.com,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,ssh-rsa debug1: SSH2_MSG_KEXINIT sent Bad packet length 1397966893. Disconnecting: Packet corrupt 

    Aggiornamento: ora con -vvv invece di output solo -v .

    2 Solutions collect form web for “Connessioni multihock SSH con proxy di modalità netcat”

    Finalmente ho scoperto che cosa è tutto questo. Sembra essere un bug in OpenSSH quando ControlMaster è acceso sia per l' proxy-host e per il target-server . Ci sono comunque alless questi due lavori:

    • Assicurarsi che esista già una connessione in esecuzione proxy-host prima di tentare di connettersi al target-server . Questo farà sbagliare l'errore e tutto funziona come previsto. Puoi farlo collegando manualmente al proxy-host .

    • Disabilita ControlMaster per il ProxyCommand come ProxyCommand ssh -o "ControlMaster no" -W %h:%p proxy-host . Ciò libererà anche il problema, ma creerà una nuova connessione proxy-host per each connessione utilizzando lo stesso ProxyCommand .

    Il vero problema qui è il ControlPersist dato che questa opzione è apparsa in OpenSSH 5.6 .

    Si consiglia di aggiornare il server openssh a >=5.6 oppure semplicemente rimuovere la direttiva dal file di configuration client.

    Saluti

    Suggerimenti per Linux e Windows Server, quali Ubuntu, Centos, Apache, Nginx, Debian e argomenti di rete.