Secure shell (SSH) is one of the most ubiquitous Linux tools. It provides secure connectivity among workstations, servers, managed switches, routers, and any number of other devices. Linux and macOS include SSH, and it's easy to add to Windows.
This article provides a quick review of standard SSH use. The main focus is to provide guidance for running one-off commands over an SSH connection and how to tunnel other applications, and I've added a bonus section on using scp
to securely copy files.
Prerequisite configurations
There are plenty of SSH configuration articles, so this article is about using SSH rather than configuring it. I've made a few assumptions about your setup:
- The SSH service is installed and running on the destination server.
- An SSH client is installed on the local computer.
- The firewall configuration permits SSH.
- You're using the standard 22/tcp SSH port.
- In these exercises, key-based authentication is NOT configured, so SSH prompts you for a password.
For the record, key-based authentication is highly recommended (indeed, almost assumed at this point). Key-based authentication connection attempts are quicker, easier to automate, and considered to be more secure. Read Passwordless SSH using public-private key pairs for guidance on this critical configuration or Eight ways to protect SSH access on your system for general suggestions.
Connect over regular SSH
I'll begin with what might be considered a standard SSH connection. This command initiates SSH and specifies the user account the remote server should authenticate and the destination server's identity (hostname or IP address):
$ ssh user01@server01
The connection attempt triggers a password challenge. This is the password for the specified user account on the remote system.
Once authenticated, the remote system presents a command prompt and provides the ability to run commands or access resources with whatever privileges the connecting user has. On some systems, security configurations prevent the root user from connecting over SSH, so it may be necessary to elevate privileges at this point.
The interactive session is established, and you may now conduct your administrative tasks.
[Learn how to install applications on Linux by downloading this eBook. ]
Run a command over SSH
What if the only thing you need to do over the SSH connection is execute a single quick command? You might not want to take the separate actions of connecting and authenticating, running the command, and then disconnecting.
Recall that you are challenged for a password in these examples unless you have key-based authentication configured (you probably should, but it's out of scope for this article).
SSH allows users to append the desired command directly to the connection attempt. The command executes, and the connection is closed.
The basic syntax is ssh user01@server01 "command"
.
For example, you could check the installation status of a package:
$ ssh user01@server01 "rpm -qa | grep nano"
Maybe you need to check a log file on a remote server for "fail" messages. You could try something like this:
$ ssh user01@server01 "cat /var/log/secure" | grep -i fail
Or perhaps you need to pull a file from the remote system. Furthermore, you must compress the file:
$ ssh user01@server01 "tar -czf /projects" > projectsbackup.tar.gz
Note that it's likely you would use scp
for this task (see below).
[ Download the Bash shell scripting cheat sheet. ]
If you need to elevate your privileges on the far side of the SSH connection with sudo
, then force the use of a pseudo-terminal with -t
. Use this if sudo
will challenge you for a password. The command looks like this:
$ ssh -t user01@server01 "sudo yum install nano"
Tunnel other applications
SSH can provide an authenticated and encrypted connection to remote devices for other applications.
Virtual Network Computing (VNC) is a useful way to connect to a remote desktop when you need a graphical user interface (GUI) to accomplish your task.
Not all VNC products provide encryption for data transfer (however, they usually do for the authentication stage). You can tunnel your VNC connection over SSH for added privacy.
You need to forward ports for this to work. Type the following:
$ ssh -L 5901:localhost:5901 -N -f -l user01@server01
Launch the VNC client and connect to localhost:5901
, which is now forwarded to the remote server.
Here's an explanation of the options in the command above:
-L
: Forward the port to the destination device. In this case, it's a direct mapping of 5901 to 5901 (the default VNC port number).-N
: Only forward ports and do not execute commands.-f
: Put SSH in the background after the connection is established (freeing the command prompt).-l
: This option specifies the remote SSH user and destination server.
Similarly, you could establish an HTTP-over-SSH tunnel to a directory named images with a command like this:
$ ssh -L 11000:localhost:80 -N -f -l user01@server01
Next, start a web browser and connect to http://localhost:11000/images
.
Use scp
If all you're trying to do is copy files, you don't have to use a full SSH connection. Instead, you can use the scp
command to perform the same goal more easily.
To copy file.txt
to the /projects
directory on remote system server01
, type:
$ scp file.txt server01:/projects
Or, if you need to copy the file from the remote system to your current directory on your system, type:
$ scp server01:/projects/file.txt .
Glen Newell has a nice writeup on using the scp
command.
Wrap up
Most Linux administrators are familiar with establishing SSH connections for remote administration. We run the ssh
command, authenticate, and then accomplish a series of tasks. When the tasks are complete, we disconnect.
This pattern is great if you need to make multiple configurations or manually issue a series of commands. However, sometimes you just need to run one command or script. SSH allows a quick connection that authenticates, runs the specified command, and disconnects. Finally, SSH can also tunnel other protocols, such as VNC or HTTP, providing a level of security beyond what the supporting applications offer. Explore the incredible flexibility of SSH and discover new ways of using this old tool.
Sobre el autor
Damon Garn owns Cogspinner Coaction, LLC, a technical writing, editing, and IT project company based in Colorado Springs, CO. Damon authored many CompTIA Official Instructor and Student Guides (Linux+, Cloud+, Cloud Essentials+, Server+) and developed a broad library of interactive, scored labs. He regularly contributes to Enable Sysadmin, SearchNetworking, and CompTIA article repositories. Damon has 20 years of experience as a technical trainer covering Linux, Windows Server, and security content. He is a former sysadmin for US Figure Skating. He lives in Colorado Springs with his family and is a writer, musician, and amateur genealogist.
Más similar
Navegar por canal
Automatización
Las últimas novedades en la automatización de la TI para los equipos, la tecnología y los entornos
Inteligencia artificial
Descubra las actualizaciones en las plataformas que permiten a los clientes ejecutar cargas de trabajo de inteligecia artificial en cualquier lugar
Nube híbrida abierta
Vea como construimos un futuro flexible con la nube híbrida
Seguridad
Vea las últimas novedades sobre cómo reducimos los riesgos en entornos y tecnologías
Edge computing
Conozca las actualizaciones en las plataformas que simplifican las operaciones en el edge
Infraestructura
Vea las últimas novedades sobre la plataforma Linux empresarial líder en el mundo
Aplicaciones
Conozca nuestras soluciones para abordar los desafíos más complejos de las aplicaciones
Programas originales
Vea historias divertidas de creadores y líderes en tecnología empresarial
Productos
- Red Hat Enterprise Linux
- Red Hat OpenShift
- Red Hat Ansible Automation Platform
- Servicios de nube
- Ver todos los productos
Herramientas
- Training y Certificación
- Mi cuenta
- Soporte al cliente
- Recursos para desarrolladores
- Busque un partner
- Red Hat Ecosystem Catalog
- Calculador de valor Red Hat
- Documentación
Realice pruebas, compras y ventas
Comunicarse
- Comuníquese con la oficina de ventas
- Comuníquese con el servicio al cliente
- Comuníquese con Red Hat Training
- Redes sociales
Acerca de Red Hat
Somos el proveedor líder a nivel mundial de soluciones empresariales de código abierto, incluyendo Linux, cloud, contenedores y Kubernetes. Ofrecemos soluciones reforzadas, las cuales permiten que las empresas trabajen en distintas plataformas y entornos con facilidad, desde el centro de datos principal hasta el extremo de la red.
Seleccionar idioma
Red Hat legal and privacy links
- Acerca de Red Hat
- Oportunidades de empleo
- Eventos
- Sedes
- Póngase en contacto con Red Hat
- Blog de Red Hat
- Diversidad, igualdad e inclusión
- Cool Stuff Store
- Red Hat Summit