One place for hosting & domains

      conectarse

      Cómo usar SSH para conectarse a un servidor remoto


      Introducción

      SSH es una herramienta esencial para ser un administrador de sistemas experto.

      SSH, o Secure Shell, es un protocolo que se utiliza para iniciar sesión de forma segura en sistemas remotos. Es la forma más común de acceder a servidores Linux remotos.

      En esta guía, analizaremos cómo usar SSH para conectarse a un sistema remoto.

      Sintaxis básica

      Para conectarse a un sistema remoto mediante SSH, usaremos el comando ssh. El formato más básico del comando es:

      En este ejemplo, remote_host es la dirección IP o el nombre de dominio al que está tratando de conectarse.

      Este comando asume que su nombre de usuario en el sistema remoto es el mismo que el que usa en el sistema local.

      Si su nombre de usuario es diferente en el sistema remoto, puede especificarlo usando esta sintaxis:

      • ssh remote_username@remote_host

      Cuando se haya conectado al servidor, se le puede solicitar que verifique su identidad mediante el ingreso de una contraseña. Más adelante, cubriremos cómo generar claves para usar en vez de contraseñas.

      Para salir de la sesión de ssh y volver a la sesión de shell local, escriba lo siguiente:

      ¿Cómo funciona SSH?

      SSH funciona mediante la conexión de un programa cliente a un servidor ssh, llamado sshd.

      En la sección anterior, ssh era el programa cliente. El servidor ssh ya está en ejecución en el remote_host que se especificó.

      En su servidor, el servidor sshd ya debe estar en ejecución. Si no es así, es posible que deba acceder a su servidor mediante una consola basada en la web o una consola serie local.

      El proceso que debe iniciar un servidor ssh depende de la distribución de Linux que esté utilizando.

      En Ubuntu, para iniciar el servidor ssh, debe escribir lo siguiente:

      Eso debería iniciar el servidor sshd y, luego, puede iniciar sesión de forma remota.

      Cómo configurar SSH

      Cuando cambie la configuración de SSH, cambiará la configuración del servidor sshd.

      En Ubuntu, el archivo de configuración sshd principal se encuentra en /etc/ssh/sshd_config.

      Haga una copia de seguridad de la versión actual de este archivo antes de editarlo:

      • sudo cp /etc/ssh/sshd_config{,.bak}

      Ábralo con un editor de texto:

      • sudo nano /etc/ssh/sshd_config

      Tendrá que dejar la mayoría de las opciones de este archivo sin modificar. Sin embargo, es posible que desee echar un vistazo a algunas:

      /etc/ssh/sshd_config

      Port 22
      

      La declaración de puerto especifica en qué puerto se escuchará el servidor sshd para las conexiones. De forma predeterminada, es el 22. Es recomendable dejar esta configuración sin modificar, a menos que tenga razones específicas para hacerlo. Si efectivamente cambia de puerto, le mostraremos cómo conectarse al puerto nuevo más adelante.

      /etc/ssh/sshd_config

      HostKey /etc/ssh/ssh_host_rsa_key
      HostKey /etc/ssh/ssh_host_dsa_key
      HostKey /etc/ssh/ssh_host_ecdsa_key
      

      Las declaraciones de claves de host especifican dónde buscar claves de host globales. Analizaremos qué es una clave de host más adelante.

      /etc/ssh/sshd_config

      SyslogFacility AUTH
      LogLevel INFO
      

      Estos dos elementos indican el nivel de registro que debería ocurrir.

      Si tiene dificultades con SSH, incrementar la cantidad de registros puede ser una buena forma de descubrir cuál es el problema.

      /etc/ssh/sshd_config

      LoginGraceTime 120
      PermitRootLogin yes
      StrictModes yes
      

      Estos parámetros especifican parte de la información de inicio de sesión.

      LoginGraceTime especifica cuántos segundos se mantendrá la conexión activa sin iniciar sesión correctamente.

      Una buena idea puede ser establecer este tiempo en un valor un poco mayor que la cantidad de tiempo que le toma iniciar sesión normalmente.

      PermitRootLogin selecciona si se permite que el usuario root inicie sesión.

      En la mayoría de los casos, esto debería modificarse a no cuando haya creado una cuenta de usuario que tenga acceso a mayores privilegios (a través de su o sudo) y que pueda iniciar sesión a través de ssh.

      strictModes es un protector de la seguridad que denegará un intento de inicio de sesión si cualquiera puede leer los archivos de autenticación.

      Esto evita intentos de inicio de sesión cuando los archivos de configuración no son seguros.

      /etc/ssh/sshd_config

      X11Forwarding yes
      X11DisplayOffset 10
      

      Estos parámetros configuran una capacidad llamada Reenvío X11. Esto le permite ver en el sistema local la interfaz gráfica de usuario (GUI) del sistema remoto.

      Esta opción debe habilitarse en el servidor y asignarse con el cliente SSH durante la conexión con la opción -X.

      Tras realizar los cambios, guarde y cierre el archivo mediante CTRL+X e Y, seguido de INTRO.

      Si modificó alguna configuración en /etc/ssh/sshd_config, asegúrese de volver a cargar el servidor sshd para implementar los cambios.

      • sudo systemctl reload ssh

      Debería probar completamente los cambios para garantizar que funcionan de la forma en que se espera.

      Una buena idea puede ser tener algunas sesiones activas cuando realice cambios. Esto le permitirá revertir la configuración si es necesario.

      Cómo iniciar sesión en SSH con claves

      Si bien es útil poder iniciar sesión en un sistema remoto usando contraseñas, es mucho mejor configurar una autenticación basada en claves.

      ¿Cómo funciona la autenticación basada en claves?

      La autenticación basada en claves funciona mediante la creación de un par de claves: una clave privada y una clave pública.

      La clave privada se encuentra en el equipo cliente y se protege y mantiene en secreto.

      La clave pública puede entregarse a alguien o colocarse en cualquier servidor al que desee acceder.

      Cuando intente conectarse usando un par de claves, el servidor usará la clave pública para crear un mensaje para el equipo cliente que solo puede leerse con la clave privada.

      Luego, el equipo cliente envía la respuesta apropiada al servidor y así el servidor sabrá que el cliente es legítimo.

      El proceso completo se realiza automáticamente después de configurar las claves.

      Cómo crear claves SSH

      Las claves SSH deben generarse en el equipo desde el que desea iniciar sesión. Generalmente, es su equipo local.

      Ingrese lo siguiente en la línea de comandos:

      Presione Intro para aceptar los valores predeterminados. Sus claves se crearán en ~/.ssh/id_rsa.pub y ~/.ssh/id_rsa.

      Cambie al directorio .ssh escribiendo lo siguiente:

      Vea los permisos de los archivos:

      Output

      -rw-r--r-- 1 demo demo 807 Sep 9 22:15 authorized_keys -rw------- 1 demo demo 1679 Sep 9 23:13 id_rsa -rw-r--r-- 1 demo demo 396 Sep 9 23:13 id_rsa.pub

      Como puede ver, solo el propietario puede leer el archivo id_rsa y escribir en él. Así es como debería ser mantenerlo en secreto.

      Sin embargo, el archivo id_rsa.pub puede compartirse y tiene permisos apropiados para esta actividad.

      Cómo transferir su clave pública al servidor

      Si actualmente tiene acceso con contraseña a un servidor, puede copiar su clave pública en él mediante la emisión de este comando:

      Con esto se iniciará una sesión SSH. Después de ingresar su contraseña, su clave pública se copiará en el archivo de claves autorizadas del servidor, lo que le permitirá iniciar sesión sin la contraseña la próxima vez.

      Opciones del lado del cliente

      Hay varios indicadores opcionales que puede seleccionar cuando se conecta mediante SSH.

      Algunos de ellos pueden ser necesarios para que la configuración coincida con la del sshd del host remoto.

      Por ejemplo, si cambió el número de puerto en su configuración de sshd, también deberá cambiarlo en el lado del cliente para que coincida escribiendo lo siguiente:

      • ssh -p port_number remote_host

      Si solo desea ejecutar un comando único en un sistema remoto, puede especificarlo después del host como este:

      • ssh remote_host command_to_run

      Se conectará al equipo remoto, se autenticará y se ejecutará el comando.

      Como dijimos antes, si el reenvío X11 se habilita en ambas computadoras, puede acceder a esa funcionalidad escribiendo lo siguiente:

      Siempre que tenga las herramientas apropiadas en su computadora, los programas de GUI que utiliza en el sistema remoto ahora abrirán su ventana en el sistema local.

      Si creó claves SSH, puede mejorar la seguridad de su servidor deshabilitando la autenticación únicamente mediante contraseña. Aparte de la consola, la única forma de iniciar sesión en su servidor será mediante la clave privada que se empareja con la clave pública que se haya instalado en el servidor.

      Advertencia: Antes de continuar con este paso, asegúrese de haber instalado una clave pública en su servidor. Si no es así, quedará bloqueado.

      Como root o usuario con privilegios sudo, abra el archivo de configuración sshd:

      • sudo nano /etc/ssh/sshd_config

      Busque la línea que dice Password Authentication y quite el comentario en ella eliminando el # inicial. Luego, puede cambiar su valor a no:

      /etc/ssh/sshd_config

      PasswordAuthentication no
      

      Dos parámetros adicionales que no deben modificarse (siempre que no haya modificado este archivo antes) son PubkeyAuthentication y PubkeyAuthentication. Están configurados de forma predeterminada y deben mostrar lo siguiente:

      /etc/ssh/sshd_config

      PubkeyAuthentication yes
      ChallengeResponseAuthentication no
      

      Después de realizar los cambios, guarde y cierre el archivo.

      Ahora puede volver a cargar el demonio SSH:

      • sudo systemctl reload ssh

      Ahora, la autenticación mediante contraseña debería deshabilitarse y solo debe poder acceder a su servidor mediante la autenticación de claves SSH.

      Conclusión

      Aprender cómo usar SSH es un proceso que vale la pena, aunque solo sea una actividad común.

      A medida que utilice las diversas opciones, descubrirá funciones más avanzadas que pueden facilitarle la vida. SSH ha mantenido su popularidad porque es seguro, ligero y útil en diversas situaciones.



      Source link

      Cómo instalar Jupyter Notebook, ejecutarla y conectarse a ella en un servidor remoto


      El autor seleccionó la Apache Software Foundation para que recibiera una donación de $100 como parte del programa Write for DOnations.

      Introducción

      Jupyter Notebook es una aplicación web interactiva de código abierto que le permite escribir y ejecutar código informático en más de 40 lenguajes de programación, incluidos Python, R, Julia y Scala. Jupyter Notebook, un producto de Project Jupyter, es útil para la codificación iterativa, ya que le permite escribir un pequeño fragmento de código, ejecutarlo y obtener el resultado.

      Jupyter Notebook proporciona la capacidad de crear documentos notebook, denominados simplemente “notebooks”. Los notebooks creados desde Jupyter Notebook son documentos de investigación reproducibles e intercambiables que incluyen elementos de texto enriquecido, ecuaciones, código y sus resultados (cifras, tablas, tramas interactivas). También pueden exportarse a archivos de código sin procesar, HTML o documentos PDF, o bien utilizarse para crear presentaciones de diapositivas interactivas o páginas web.

      A través de este artículo, aprenderá a instalar y configurar la aplicación Jupyter Notebook en un servidor web de Ubuntu 18.04, y también a conectarse a ella desde su computadora local. Además, también veremos cómo utilizar Jupyter Notebook para ejecutar un ejemplo de código de Python.

      Requisitos previos

      Para completar este tutorial, necesitará lo siguiente:

      Además, si su computadora local tiene Windows instalado, deberá instalar PuTTY para establecer un túnel SSH hacia su servidor. Siga nuestra guía Cómo crear claves SSH con PuTTY en Windows para descargar e instalar PuTTY.

      Paso 1: Instalar Jupyter Notebook

      Dado que los notebooks se utilizan para escribir, ejecutar y ver el resultado de pequeños fragmentos de código, primero deberá configurar la compatibilidad de lenguajes de programación. Jupyter Notebook utiliza un kernel específico de lenguaje, un programa informático que ejecuta e inspecciona código. Jupyter Notebook tiene muchos kernels en diferentes lenguajes y el predeterminado es IPython. A través de este tutorial, configurará Jupyter Notebook para ejecutar código de Python a través del kernel de IPython.

      Suponiendo que haya seguido los tutoriales con vínculos de la sección de requisitos previos, debería tener instalados Python 3, pip y un entorno virtual. Los ejemplos de esta guía cumplen con la convención utilizada en el tutorial de los requisitos previos respecto de la instalación de Python 3, por la cual se denomina al entorno virtual “my_env”. Sin embargo, podrá asignarle el nombre que desee.

      Comience activando el entorno virtual:

      • source my_env/bin/activate

      A continuación, su linea de comandos llevará como prefijo el nombre de su entorno.

      Ahora que se encuentra en su entorno virtual, instale Jupyter Notebook:

      • python3 -m pip install jupyter

      Si la instalación fue correcta, verá un resultado similar a este:

      Output

      . . . Successfully installed MarkupSafe-1.0 Send2Trash-1.5.0 backcall-0.1.0 bleach-2.1.3 decorator-4.3.0 entrypoints-0.2.3 html5lib-1.0.1 ipykernel-4.8.2 ipython-6.4.0 ipython-genutils-0.2.0 ipywidgets-7.2.1 jedi-0.12.0 jinja2-2.10 jsonschema-2.6.0 jupyter-1.0.0 jupyter-client-5.2.3 jupyter-console-5.2.0 jupyter-core-4.4.0 mistune-0.8.3 nbconvert-5.3.1 nbformat-4.4.0 notebook-5.5.0 pandocfilters-1.4.2 parso-0.2.0 pexpect-4.5.0 pickleshare-0.7.4 prompt-toolkit-1.0.15 ptyprocess-0.5.2 pygments-2.2.0 python-dateutil-2.7.3 pyzmq-17.0.0 qtconsole-4.3.1 simplegeneric-0.8.1 six-1.11.0 terminado-0.8.1 testpath-0.3.1 tornado-5.0.2

      Con esto, Jupyter Notebook quedará instalado en su servidor. A continuación, veremos la forma de ejecutar la aplicación.

      Paso 2: Ejecutar Jupyter Notebook

      Jupyter Notebook debe ejecutarse desde su VPS, de modo que pueda conectarse a ella desde su computadora local utilizando un túnerl SSH y su navegador web favorito.

      Para ejecutar el servidor Jupyter Notebook, instroduzca el siguiente comando:

      Después de ejecutar este comando, verá un resultado similar a este:

      Output

      [I 19:46:22.031 NotebookApp] Writing notebook server cookie secret to /home/sammy/.local/share/jupyter/runtime/notebook_cookie_secret [I 19:46:22.365 NotebookApp] Serving notebooks from local directory: /home/sammy/environments [I 19:46:22.365 NotebookApp] 0 active kernels [I 19:46:22.366 NotebookApp] The Jupyter Notebook is running at: [I 19:46:22.366 NotebookApp] http://localhost:8888/?token=Example_Jupyter_Token_3cadb8b8b7005d9a46ca4d6675 [I 19:46:22.366 NotebookApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation). [W 19:46:22.366 NotebookApp] No web browser found: could not locate runnable browser. [C 19:46:22.367 NotebookApp] Copy/paste this URL into your browser when you connect for the first time, to login with a token: http://localhost:8888/?token=Example_Jupyter_Token_3cadb8b8b7005d9a46ca4d6675&tokenExample_Jupyter_Token_3cadb8b8b7005d9a46ca4d6675

      Es posible que en el resultado observe una advertencia No web browser found. Esto es normal, ya que la aplicación se ejecuta en un servidor y probablemente no haya instalado en él un navegador web. A través de esta guía, verá la forma de conectarse a Notebook en el servidor utilizando túneles SSH en la siguiente sección.

      Por ahora, salga de Jupyter Notebook presionando CTRL+C e y, y luego utilice ENTER para confirmar:

      Output

      Shutdown this notebook server (y/[n])? y [C 20:05:47.654 NotebookApp] Shutdown confirmed [I 20:05:47.654 NotebookApp] Shutting down 0 kernels

      Luego, cierre el servidor con el comando exit:

      Ejecutó Jupyter Notebook en su servidor. Sin embargo, para acceder a la aplicación y comenzar a trabajar con notebooks, deberá conectarse a ella mediante túneles SSH y un navegador web en su computadora local.

      Los túneles SSH son una alternativa sencilla y rápida para conectarse a la aplicación Jupyter Notebook de su servidor. El shell seguro (más conocido como SSH) es un protocolo de red que le permite conectarse a un servidor remoto de forma segura a través de una red no protegida.

      El protocolo SSH incluye un mecanismo de enrutamiento de puerto que le permite canalizar algunas aplicaciones que se ejecutan en un número de puerto específico de un servidor a un número de puerto específico en su computadora local. Aprenderemos a “enrutar” de forma segura la aplicación Jupyter Notebook de su servidor (en el puerto 8888, por defecto) a un puerto de su computadora local.

      El método que utilice para establecer un túnel SSH dependerá del sistema operativo de su computadora local. Entre las subsecciones que se muestran a continuación,elija la que sea más pertinente para su computadora.

      Nota: Es posible configurar e instalar Jupyter Notebook utilizando DigitalOcean Web Console, pero la conexión a la aplicación mediante un túnel SSH debe realizarse a través del terminal o con PuTTY.

      Túneles SSH con macOS o Linux

      Si su computadora local tiene Linux o macOS instalado, es posible establecer un túnel SSH con un solo comando.

      ssh es el comando estándar para abrir una conexión SSH, pero cuando se utiliza con la directiva -L se puede especificar que un puerto determinado en el host local (es decir, su computadora local) se envíe a un host y un puerto determinados en el host remoto (en este caso, su servidor). Esto significa que lo que ejecute en el puerto especificado en el servidor remoto (8888, el puerto predeterminado de Jupyter Notebook) aparecerá en el puerto especificado en su computadora local (8000en el comando del ejemplo).

      Para establecer su propio túnel SSH, ejecute el siguiente comando. Puede cambiar el puerto 8000por uno de su elección si, por ejemplo, otro proceso utiliza el puerto 8000. Se le recomienda utilizar un puerto mayor o igual al 8000, ya que es improbable que otros procesos utilicen esos números de puertos. Asegúrese de incluir la dirección IP de su propio servidor y el nombre de su usuario no root del servidor:

      • ssh -L 8000:localhost:8888 sammy@your_server_ip

      Si no hay errores en este comando, accederá a su servidor remoto. Desde allí, active el entorno virtual:

      • source ~/environments/my_env/bin/activate

      Luego, ejecute la aplicación Jupyter Notebook:

      Para conectarse a Jupyter Notebook, utilice su navegador web favorito y diríjase al puerto local del host local: http://localhost:8000. Ahora que estableció conexión con Jupyter Notebook, continúe con el Paso 4 para aprender a utilizarla.

      Túneles SSH con Windows y PuTTY

      PuTTY es un cliente SSH de código abierto para Windows que puede utilizarse para conectarse a su servidor. Tras descargar e instalar PuTTY en su computadora con Windows (como se describe en el tutorial de los requisitos previos), abra el programa e introduzca la URL o la dirección IP de su servidor, como se muestra aquí:

      Introduzca la URL o IP del servidor en Putty

      A continuación, haga clic en + SSH en la parte inferior izquierda del panel y luego en Tunnels. En esta ventana, introduzca el puerto que desea utilizar para acceder a Jupyter en su computadora local (8000). Se le recomienda utilizar un puerto mayor o igual al 8000, ya que es improbable que otros procesos utilicen esos números de puertos. Si otro proceso utiliza el puerto 8000, seleccione un número de puerto diferente que no se haya utilizado. A continuación, establezca el destino como localhost:8888, ya que Jupyter Notebook funciona en el puerto 8888. Luego, haga clic en el botón Add. Deberían aparecer los puertos en el campo Forwarded ports:

      Configure el túnel SSH en Putty

      Por último, haga clic en el botón Open. Esto conectará su computadora al servidor a través de SSH y canalizará los puertos deseados. Si no aparecen errores, active su entorno virtual:

      • source ~/environments/my_env/bin/activate

      Luego, ejecute Jupyter Notebook:

      A continuación, diríjase al puerto local en su navegador web favorito, una opción puede ser http://localhost:8000 (o cualquier número de puerto que haya elegido), para establecer conexión con la instancia de Jupyter Notebook del servidor. Ahora que estableció conexión con Jupyter Notebook, continúe con el Paso 4 para aprender a utilizarla.

      Paso 4: Usar Jupyter Notebook

      Cuando se accede a través de un navegador web, Jupyter Notebook proporciona un panel de notebooks que funciona como navegador de archivos y le proporciona una interfaz para crear, editar y explorar notebooks. Considere estos notebooks como documentos (guardados con una extensión de archivo .ipynb) que usted puede llenar con cualquier número de celdas individuales. Cada celda tiene un editor de texto interactivo que puede utilizarse para ejecutar código o escribir texto representado. Además, los notebooks le permiten escribir y ejecutar ecuaciones e incluir otros medios, como imágenes o tramas interactivas. También se pueden exportar y compartir en varios formatos (.ipyb, .pdf, .py). Para mostrar algunas de estas funciones, crearemos un archivo notebook desde el panel de notebooks, escribiremos una tabla de texto sencilla con una ecuación y ejecutaremos código básico de Python 3.

      En este punto, deberá estar conectado al servidor a través de un túnel SSH y haber iniciado la aplicación Jupyter Notebook desde su servidor. Una vez que se dirija a http://localhost:8000, verá aparecer una página de inicio de sesión:

      Pantalla de inicio de sesión de Jupyter Notebook

      En el campo Password or token de la parte superior, introduzca el token que vio aparecer en el resultado después de ejecutar jupyter notebook desde su servidor:

      Output

      [I 20:35:17.004 NotebookApp] Writing notebook server cookie secret to /run/user/1000/jupyter/notebook_cookie_secret [I 20:35:17.314 NotebookApp] Serving notebooks from local directory: /home/sammy [I 20:35:17.314 NotebookApp] 0 active kernels [I 20:35:17.315 NotebookApp] The Jupyter Notebook is running at: [I 20:35:17.315 NotebookApp] http://localhost:8888/?token=Example_Jupyter_Token_3cadb8b8b7005d9a46ca4d6675 [I 20:35:17.315 NotebookApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation). [W 20:35:17.315 NotebookApp] No web browser found: could not locate runnable browser. [C 20:35:17.316 NotebookApp] . . .

      También puede copiar esa URL del resultado de su terminal y pegarla en la barra de direcciones de su navegador.

      De forma automática, Jupyter notebook mostrará los archivos y las carpetas almacenados en el directorio desde el que se ejecuta. Cree un nuevo archivo notebook haciendo clic en New y luego en Python 3 en la parte superior derecha del panel de notebooks:

      Cree un nuevo notebook de Python3

      Dentro de este nuevo notebook, cambie la primera celda para aceptar sintaxis de lenguaje de marcado presionando Cell > Cell Type > Markdown en la barra de navegación de la parte superior. Esta categoría “Cell Type” también le permite escribir ecuaciones en LaTeX además de usar lenguaje de marcado. Por ejemplo, escriba lo siguiente en la celda después del cambio a lenguaje de marcado:

      # Simple Equation
      
      Let us now implement the following equation in Python:
      $$ y = x^2$$
      
      where $x = 2$
      

      Para convertir el lenguaje de marcado en texto enriquecido, presione CTRL + ENTER. Debería aparecer el siguiente resultado:

      Convierta la ecuación de ejemplo en texto enriquecido

      Puede utilizar las celdas de lenguaje de marcado para crear notas y documentar su código.

      Ahora, implementaremos una ecuación sencilla y mostraremos el resultado. Haga clic en Insert *> *Insert Cell Below para insertar una celda. En esta nueva celda, introduzca el siguiente código:

      x = 2
      y = x*x
      print(y)
      

      Para ejecutar el código, presione CTRL + ENTER. Se mostrará el siguiente resultado:

      Resuelva la ecuación de muestra

      Estos son algunos ejemplos relativamente sencillos de lo que puede hacer con Jupyter Notebook. Sin embargo, es una aplicación muy potente que puede implementarse en muchos casos de uso. Desde aquí, puede agregar algunas bibliotecas de Python y utilizar el notebook como haría con cualquier otro entorno de desarrollo de Python.

      Conclusión

      Ahora, debería poder escribir código y texto reproducible de Python utilizando Jupyter Notebook en un servidor remoto. Para ver rápidamente Jupyter Notebook, haga clic en Help en la barra de navegación superior y seleccione User Interface Tour, como se muestra aquí:

      Encontrar el recorrido de la ayuda de Jupyter Notebook

      Si le interesa, le sugerimos obtener más información sobre Jupyter Notebook consultando la documentación de Project Jupyter. Además, puede aprovechar lo que aprendió en este tutorial aprendiendo a codificar en Python 3.



      Source link