Выполнение команд на удалённом сервере без подключения по SSH

Сколько лет администрирую серверы, а пропускал мимо ушей интересную возможность ssh. Оказывается, можно выполнять некоторые команды на удалённом сервере, не подключаясь непосредственно к нему по ssh.

Нужно лишь прописать в кавычках команду, требующую выполнения, после основной команды подключения.

Например, просмотр логов nginx/angie/etc.

ssh root@192.168.10.1 'cat /var/log/nginx/access.log'

Или показать листинг директорий.

ssh root@192.168.10.1 'ls -la /var/www/example.com/public'

Ещё удобнее становится выполнять команды, если добавить алиас для команды ssh root@192.168.10.1 в настройки оболочки командной строки и используя аутентификацию по ключу.

alias srv="ssh root@192.168.10.1"

Далее выполняем команды:

srv apt-get update
srv apt-get upgrade
srv systemctl reload nginx

Команды можно комбинировать, как в обычной консоли.

srv 'cd /opt/project/ && git pull && systemctl restart gunicorn'

Выполнить некоторые действия от имени другого пользователя:

srv 'sudo -u user ls -la .ssh/authorized_keys'

И так далее. :)