Comandos para comprobar si un puerto está abierto en nuestra PC/Servidor u otro remoto

A veces necesitamos saber si X puerto está abierto en un ordenador (o servidor) remoto, en ese momento tenemos no pocas opciones o herramientas a usar:

nmap

La primera solución que pensamos muchos es: nmap , ver artículo llamado: Ver puertos abiertos con NMap y medidas para protegernos 

En caso de que no deseen hacer todo un scan, sino que simplemente deseen saber si en X ordenador/servidor está abierto un determinado puerto, sería así:

nmap {IP_O_DOMINIO} -p {PUERTO} | grep -i tcp

Ejemplo:

nmap localhost -p 22 | grep -i tcp

O bien:

nmap 127.0.0.1 -p 22 | grep -i tcp

Lo que hace esto es simple, pregunta a la IP o Host si el puerto dado está abierto o no, luego el grep filtra y solo muestra la línea que desean leer, la que les indica si está abierto (open) o cerrado (closed) ese puerto:

Pues… sí, nmap (Herramienta de exploración de redes y de sondeo de puertos) nos sirve pero, hay aún otras variantes donde hay que teclear menos 🙂

nc

nc o netcat, es una opción mucho más simple para saber si un puerto está o no abierto:

nc -zv {IP_O_DOMINIO} {PUERTO}

O sea:

nc -zv 192.168.122.88 80

Aquí tienen un screenshot haciendo una prueba a un puerto que sí está abierto (80) y otra a otro puerto que no lo está (53):

El -zv lo que hace es simple, la v nos permite ver si está abierto o no el puerto, mientras que la z cierra la conexión tan pronto se comprueba el puerto, de no poner la z entonces tendríamos que hacer un Ctrl + C para cerrar el nc.

telnet

Esta es la variante que hace un tiempo usaba (por desconocimiento de las antes mencionadas), a su vez telnet nos sirve para mucho más que solo saber si un puerto está abierto o no.

telnet {IP_O_HOST} {PUERTO}

Aquí un ejemplo:

telnet 192.168.122.88 80

El problema de telnet es el cierre de la conexión. O sea, en determinadas ocasiones no podremos cerrar la solicitud de telnet y nos veremos obligados a cerrar esa terminal, o de lo contrario en otra terminal hacer un killall telnet o algo similar. Es por eso que evito usar telnet a no ser que me sea muy necesario.

Fin!

En fin, espero que les haya resultado interesante esto, si alguien conoce alguna otra forma de conocer si un puerto está abierto o no en otro ordenador lo deja en los comentarios.

Saludos


14 comentarios

  1.   Tesla dijo

    Me vendrán muy bien estos comandos para cuando conecto por SSH!

    Gracias!

  2.   anon dijo

    ¿Hay alguna aplicación gráfica para hacer lo mismo?

    1.    KZKG^Gaara dijo

      Bueno, siempre puedes instalar zenmap que usa nmap por detrás 🙂

    2.    vidagnu dijo

      Si con nmapfe, es la interfaz gráfica que viene con nmap.

  3.   Konozidus dijo

    Con el netcat me dice que la z es una opción invalida, sin ella funciona perfectamente, y en $man nc, no aparece tampoco. ¿de donde ha salido?

    http://blog.desdelinux.net/wp-content/uploads/2013/12/Captura-de-pantalla-de-2013-12-29-011908.png

    1.    KZKG^Gaara dijo

      -z : Specifies that nc should just scan for listening daemons, without sending any data to them. It is an error to use this option in conjunction with the -l option.

      A mí con nc sí me aparece O_O

  4.   eliotime3000 dijo

    ¿Y cómo hago para conectarme a un VPS por SSL?

  5.   vidagnu dijo

    Yo lo que hago siempre es ejecutar nmapfe host-ip para que me de todos los puertos tcp, ahora para ver los puertos udp abiertos tenes que ejecutar:

    nmap -sU host-ip

    Tambien he usado telnet mas que todo en windows si no tengo instalado nmap, la variante de netcat no me llama la atencion…

    Saludos

  6.   Alejandro dijo

    Me gustaria saber mas sobre esto, espero puedas apoyarme tenco conocimientos muy basicos y me gustaria saber mas para aplicar este tipo de conocimiento en mi trabajo.

  7.   tecnologia21 dijo

    Acabo de descubrir que no tengo los puertos que necesito abiertos, ahora tendré que investibar cómo abrirlos para poder hacer lo que necesito. Gracias por el aporte, me ha servido de mucho.

  8.   Domtrel dijo

    ¡Artículo muy interesante! Además netcat, funciona también sobre vmware ESXi:

    http://www.sysadmit.com/2015/09/prueba-de-conexion-un-puerto-desde-VMWare-Windows-Linux.html

  9.   lolo dijo

    sudo get install nmap

    namp 192.168.0.19 -p 21 | grep -i tcp

    home del usuario local srv/ftp

    reinicia con sudo service vsftpd restart

    write_enable=YES para que usuarios locales puedan subir archivos.

    Para enjaular anonymous en su home
    chroot_local_user=yes
    chroot_list_enable=yes

    allow_writreable_chroot=yes

    no_annon_password=no para que el anonimo ponga pass por cortesia

    deny_email_enable=yes
    banned_email_file=/etc/vsftpd.banned_emails Para denegar a un anonimo por correo electronico.
    ____————————————————————–
    enjaular a ususario menos a los de la lista
    chroot_local_user=yes
    chroot_lits_enable=yes

    chroot_list_file=/etc/vsftpd.chroot_list.

    Para agreggar usuarios sudo adduser nombre

    desabilitar locales local_enable=no

    enjaulaos por defeto
    anonymous enjaulados en srv/ftp

    locales en su home

  10.   Dalisperis dijo

    ¡Muy bueno! Si no tenemos nmap, telnet o netcat, podemos utilizar cat y el directorio proc:

    cat < /dev/tcp/HOST/PUERTO

    Ejemplo: http://www.sysadmit.com/2016/03/linux-cat-y-proc-prueba-de-conexion.html

  11.   Cuetox dijo

    Gracias, muy buena explicacion

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

*

*

  1. Responsable de los datos: Miguel Ángel Gatón
  2. Finalidad de los datos: Controlar el SPAM, gestión de comentarios.
  3. Legitimación: Tu consentimiento
  4. Comunicación de los datos: No se comunicarán los datos a terceros salvo por obligación legal.
  5. Almacenamiento de los datos: Base de datos alojada en Occentus Networks (UE)
  6. Derechos: En cualquier momento puedes limitar, recuperar y borrar tu información.