Introducción
En esta publicación, vamos a aprender algunos comandos ssh útiles y comandos scp con ejemplos. SSH es un protocolo que significa Secure Shell, que es una herramienta de comando del lado del cliente que se utiliza para tomar sesiones remotas del sistema Linux de forma segura. Utiliza el método de cifrado simétrico y asimétrico para transferir datos a través de la red. SSH es una herramienta muy recomendable para tomar una sesión remota de un servidor, ya que es la forma más segura de conectarse a cualquier servidor. SSH es el reemplazo de la herramienta remota no segura utilizada anteriormente como telnet. El número de puerto de SSH es 22. Las versiones de SSH son Protocolo SSH Versión 1 y Protocolo SSH Versión 2, también denominados SSH-1 y SSH-2 . La diferencia entre SSH-1 y SSH-2 es que SSH-2 admite el Certificado de clave pública mientras que SSH-1 no.
scp es una utilidad de línea de comandos que se utiliza para copiar datos de un sistema Linux a otro a través de la red de forma segura. Al igual que SSH, SCP también usa el puerto número 22 para conectarse y transferir datos a través de la red. SCP es una buena alternativa y una herramienta recomendada contra los protocolos de transferencia de datos no seguros como FTP, Telnet y es altamente seguro para transferir datos a través de la red, ya que utiliza el protocolo SSH para transferir datos de forma segura.
Así que echemos un vistazo a algunos comandos ssh y scp importantes con ejemplos.
Tengo dos sistemas Linux en mi entorno de prueba, es decir, pc1 y pc2. Busque los detalles del sistema a continuación.
Escenario de entorno de prueba:
PC1 :
Computer Name – pc1 IP Address – 192.168.0.105
PC2 :
Computer Name – pc2 IP Address – 192.168.0.106
1. Tome control remoto de PC2 desde PC1 usando el comando ssh
Como todos sabemos, ssh se usa para tomar la consola remota de otro sistema Linux de forma segura, así que tomemos la consola remota de pc2 de pc1 que puede usar debajo del comando ssh.
Sintaxis:
# ssh username@IP Address of the Remote Computer
[root@pc1 ~]# ssh [email protected] # Take Remote of PC2 from PC1 [email protected]'s password: Last login: Thu Mar 9 09:14:34 2017 from 192.168.0.107
Remoto tomado con éxito, para confirmar verifique el nombre de host y la dirección IP del sistema remoto como se muestra a continuación.
[root@pc2 ~]# hostname pc2 [root@pc2 ~]# ifconfig eth0 Link encap:Ethernet HWaddr 00:0C:29:01:77:E7 inet addr:192.168.0.106 Bcast:192.168.0.255 Mask:255.255.255.0 inet6 addr: fe80::20c:29ff:fe01:77e7/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:9688 errors:0 dropped:0 overruns:0 frame:0 TX packets:4695 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:11157837 (10.6 MiB) TX bytes:370245 (361.5 KiB) lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:65536 Metric:1 RX packets:16 errors:0 dropped:0 overruns:0 frame:0 TX packets:16 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:960 (960.0 b) TX bytes:960 (960.0 b)
2. Tome la consola remota del sistema con el nombre de usuario actualmente conectado
Puede tomar la consola remota del sistema con el nombre de usuario actualmente conectado. Por ejemplo, aquí en pc1 inicié sesión con el nombre de usuario "root" y quiero tomar una sesión remota de la máquina pc2 usando el mismo nombre de usuario, es decir, "root", entonces podemos usar el siguiente comando.
[root@pc1 ~]# ssh 192.168.0.106 # Take Remote using currently logged in username [email protected]'s password: Last login: Thu Mar 9 09:08:54 2017 from 192.168.0.107 [root@pc2 ~]# hostname pc2
3. Cerrar sesión desde la consola remota
Para cerrar sesión en una consola remota ya tomada, use el comando cerrar sesión. Consulte el resultado de muestra a continuación.
[root@pc2 ~]# logout # Logout from already taken remote console Connection to 192.168.0.106 closed.
4. Compruebe la versión del paquete ssh instalado
Para verificar la versión del paquete ssh instalado actualmente, use el comando ssh con la opción -V . Consulte el resultado de muestra a continuación.
[root@pc1 ~]# ssh -V # check the currently installed ssh package version OpenSSH_5.3p1, OpenSSL 1.0.1e-fips 11 Feb 2013
5. Copie datos de un sistema Linux a otro a través de la red usando el comando scp
Para copiar datos de un sistema Linux a otro, podemos usar el comando scp. Aquí estoy copiando datos, es decir, touch.txt archivo de pc1 a pc2. Consulte el resultado de muestra a continuación.
[root@pc1 ~]# touch text.txt # Create a Sample text File [root@pc1 ~]# ls anaconda-ks.cfg Documents install.log.syslog Public Videos data Downloads Music Templates Desktop install.log Pictures text.txt [root@pc1 ~]# scp text.txt [email protected]:/root/Desktop/ # Copy data from Local System to Remote System [email protected]'s password: text.txt 100% 0 0.0KB/s 00:00
6. Descargar/Copiar datos del sistema remoto usando el comando SCP
Para copiar datos del sistema remoto al sistema local, puede usar el siguiente comando. Aquí estoy copiando datos de pc2 a pc1.
[root@pc1 ~]# scp [email protected]:/data/database.txt /root/ # Copy Data from Remote System to Local using scp Command [email protected]'s password: database.txt 100% 0 0.0KB/s 00:00 [root@pc1 ~]# ls anaconda-ks.cfg Desktop install.log Pictures text.txt data Documents install.log.syslog Public Videos database.txt Downloads Music Templates
7. Copie datos del sistema remoto al sistema local de forma recursiva
Para copiar un directorio con todo su contenido de forma recursiva, puede usar el comando scp con la opción -r . Consulte la salida de muestra a continuación. Aquí estoy copiando un directorio, es decir, datos del sistema remoto, es decir, pc2, al sistema local, es decir, pc1.
[root@pc1 ~]# scp -r [email protected]:/data /root/Desktop/ # Copy directory Recursively [email protected]'s password: database.txt 100% 0 0.0KB/s 00:00 [root@pc1 ~]# cd /root/Desktop/ [root@pc1 Desktop]# ls data [root@pc1 Desktop]# ls data/ database.txt [root@pc1 Desktop]#
8. Copie datos del sistema local al sistema remoto recursivamente usando el comando scp
Para copiar un directorio con todo su contenido de forma recursiva desde un sistema local a un sistema remoto, puede usar el comando scp con la opción -r . Consulte el resultado de muestra a continuación.
[root@pc1 ~]# ls apps/ test1.txt test2.txt test3.txt test4.txt test5.txt [root@pc1 ~]# scp -r apps/ [email protected]:/root # Copy directory Recursively from Local System to Remote System [email protected]'s password: test2.txt 100% 0 0.0KB/s 00:00 test1.txt 100% 0 0.0KB/s 00:00 test4.txt 100% 0 0.0KB/s 00:00 test5.txt 100% 0 0.0KB/s 00:00 test3.txt 100% 0 0.0KB/s 00:00
9. Conecte y ejecute un comando simultáneamente en un sistema remoto mediante el comando SSH
Puede tomar la sesión remota de un servidor y ejecutar un comando simultáneamente. Por ejemplo, aquí estoy tomando el control remoto del sistema pc2 y ejecutando un comando, es decir, ifconfig. Consulte el resultado de muestra a continuación.
[root@pc1 ~]# ssh 192.168.0.106 "ifconfig" # take remote and run a command simultaneously [email protected]'s password: eth0 Link encap:Ethernet HWaddr 00:0C:29:01:77:E7 inet addr:192.168.0.106 Bcast:192.168.0.255 Mask:255.255.255.0 inet6 addr: fe80::20c:29ff:fe01:77e7/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:9870 errors:0 dropped:0 overruns:0 frame:0 TX packets:4845 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:11182999 (10.6 MiB) TX bytes:393576 (384.3 KiB) lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:65536 Metric:1 RX packets:18 errors:0 dropped:0 overruns:0 frame:0 TX packets:18 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:1058 (1.0 KiB) TX bytes:1058 (1.0 KiB)
10. Tomar control remoto del sistema por un nombre de usuario diferente usando el comando ssh
Para tomar control remoto del sistema con un nombre de usuario diferente, puede usar el comando ssh con la opción -l . Consulte el resultado a continuación.
[root@pc1 Desktop]# ssh -l root 192.168.0.106 # Take remote using different username [email protected]'s password: Last login: Fri Mar 10 08:54:59 2017 from 192.168.0.107
11. Copie archivos y directorios ocultos usando el comando scp.
Para copiar archivos y directorios ocultos, puede usar el comando ssh con la opción -rp . una cosa, tenga en cuenta que durante la copia de archivos y directorios ocultos usando el comando scp, siempre coloque . (punto) al final de la ruta, por ejemplo “scp -rp /root/.“.
[root@pc1 ~]# scp -rp /root/. [email protected]:/hidden # Copy hidden files and directories using scp command [email protected]'s password: .gtk-bookmarks 100% 107 0.1KB/s 00:00 .bashrc 100% 176 0.2KB/s 00:00 .bash_logout 100% 18 0.0KB/s 00:00 .bash_profile 100% 176 0.2KB/s 00:00 database.txt 100% 0 0.0KB/s 00:00 .bash_history 100% 3327 3.3KB/s 00:00 database.txt 100% 0 0.0KB/s 00:00 profiles.ini 100% 104 0.1KB/s 00:00 . . . home-2f9509b7.log 100% 32KB 32.0KB/s 00:00 addressbook.db 100% 12KB 12.0KB/s 00:00 addressbook.db.summary 100% 86 0.1KB/s 00:00 .ICEauthority 100% 1244 1.2KB/s 00:00 [root@pc1 ~]# ssh 192.168.0.106 [email protected]'s password: Last login: Fri Mar 10 08:56:14 2017 from 192.168.0.107 [root@pc2 ~]# ls -a /hidden/ . data .gnote Pictures .. database.txt .gnupg Public anaconda-ks.cfg .dbus .gtk-bookmarks .pulse apps Desktop .gvfs .pulse-cookie .bash_history Documents .ICEauthority .ssh .bash_logout Downloads install.log .tcshrc .bash_profile .esd_auth install.log.syslog Templates .bashrc .gconf .local text.txt .cache .gconfd .mozilla Videos .config .gnome2 Music .cshrc .gnome2_private .nautilus