Perché telnet manca
zsh: command not found: telnet
Apple ha tolto telnet, insieme a ftp, in macOS High Sierra (10.13). Il Mac non ha niente di rotto e non c'è un'impostazione per riattivarlo. Hai due strade, e quella giusta dipende da cosa volevi farci.
- Controllare se una porta è aperta, per un server web, un server di posta o SSH: usa
nc, già presente sul Mac. - Accedere a un apparato che parla Telnet, come uno switch, un router o un console server: installa il client Telnet.
Provare una porta con nc
Molti scrivono telnet host 443 solo per vedere se una porta risponde. nc lo fa meglio, perché lo dice chiaramente e poi esce:
nc -vz example.com 443
Connection to example.com port 443 [tcp/https] succeeded!
Una porta chiusa dà Connection refused, e una porta bloccata da un firewall non risponde fino al timeout. Aggiungi -G 5 per rinunciare dopo 5 secondi. Entrambi i casi hanno la loro guida: connection refused e connection timed out.
Per scrivere in un protocollo testuale, come SMTP sulla porta 25, togli -z. -c invia CR e LF alla fine di ogni riga, come si aspettano molti server:
nc -c mail.example.com 25
Per un apparato che negozia le opzioni Telnet, aggiungi -t così nc risponde. Va bene per un'occhiata veloce, ma un vero client gestisce come si deve l'eco e la dimensione del terminale.
Installare telnet con Homebrew
Con Homebrew installato:
brew install telnet
È il client che Apple includeva un tempo. Anche il pacchetto inetutils contiene un telnet, ma va in conflitto con questo, quindi scegline uno solo. Poi collegati con l'indirizzo e, se non è 23, la porta:
telnet 192.0.2.10 23
Trying 192.0.2.10...
Connected to 192.0.2.10.
Escape character is '^]'.
Per uscire premi Ctrl-], scrivi quit e premi Invio. Ctrl-C di solito non funziona, perché viene inviato all'apparato.
Quando serve ancora Telnet
Telnet invia tutto in chiaro, password comprese. Chiunque si trovi sul percorso di rete può leggerlo. Ha comunque usi reali:
- Switch, router, stampanti e PDU che non hanno SSH, o lo hanno spento di fabbrica.
- Console server che espongono ogni porta seriale come una porta Telnet, per esempio 2001, 2002 e così via.
- Apparati di laboratorio, simulatori di rete e vecchi sistemi industriali.
- Servizi testuali come le BBS e i giochi MUD.
Usalo su una rete di cui ti fidi, come una VLAN di gestione o un cavo diretto, e mai attraverso internet.
Passare un apparato da Telnet a SSH
Se l'apparato supporta SSH, attivalo e spegni Telnet. Su Cisco IOS, per esempio, dopo aver creato un utente locale:
configure terminal
ip domain-name example.com
crypto key generate rsa modulus 2048
ip ssh version 2
line vty 0 4
login local
transport input ssh
end
write memory
Prova SSH da una seconda finestra prima di chiudere la sessione Telnet. Per le macchine Linux che hanno ancora un server Telnet, vedi come attivare SSH su Ubuntu e poi rimuovi il pacchetto del server telnet.
Problemi comuni
Connection refused. L'apparato non accetta Telnet su quella porta. Può essere spento, o permesso solo da una rete di gestione.- Connesso, poi niente. Premi Invio. Alcuni apparati mostrano il login solo dopo un tasto.
- Caratteri strani o menu rotti. L'apparato usa un altro set di caratteri, come ISO-8859-1, o si aspetta un altro tipo di terminale. Vedi unknown terminal type.
- Backspace stampa
^?. L'apparato si aspetta Ctrl-H per cancellare. Premi Ctrl-H al suo posto, o imposta il tasto di cancellazione sull'apparato.
Domande
Perché telnet non c'è sul mio Mac?
Apple ha tolto telnet e ftp da macOS a partire da High Sierra (10.13), nel 2017, perché entrambi trasmettono tutto in chiaro. Il comando non è nascosto: non c'è più.
Come si installa telnet su Mac?
Installa Homebrew, poi esegui brew install telnet. Anche il pacchetto inetutils ha un comando telnet, ma i due vanno in conflitto, quindi installane solo uno.
Cosa posso usare al posto di telnet per provare una porta su Mac?
nc, che è già incluso. nc -vz example.com 443 stampa succeeded se la porta accetta connessioni e Connection refused se lì non ascolta niente.
Come si esce da telnet?
Premi Ctrl-], che è il carattere di escape, poi scrivi quit e premi Invio.
Fonti
- telnet(1), manuale FreeBSD
- nc(1), manuale OpenBSD
- Formula Homebrew: telnet
- RFC 854, specifica del protocollo Telnet
- Configurare Secure Shell, Cisco