For serious Linux administration, SSH remains the backbone of remote management. Modern tools enhance this foundation:
# Basic SSH connection
ssh username@server_ip -p 22
# Using SSH config for multiple servers
~/.ssh/config example:
Host production
HostName 192.168.1.100
User admin
Port 2222
IdentityFile ~/.ssh/production_key
Instead of basic WGET, consider these more robust alternatives:
# SCP for secure transfers
scp /local/path/file.txt user@remote:/remote/path/
# Rsync for efficient sync
rsync -avz -e ssh /local/dir/ user@remote:/remote/dir/
# Mount remote directories with SSHFS
sshfs user@remote:/remote/path /local/mountpoint
For editing configs remotely, modern CLI editors offer better workflows:
# Using vim with SSH
vim scp://user@host//path/to/file
# VS Code with Remote SSH extension
# Install from Marketplace, then connect via:
code --remote ssh-remote+host /path/to/project
For repetitive tasks across multiple servers:
# Sample playbook for nightly jobs
- name: Configure nightly processing
hosts: processing_servers
tasks:
- name: Ensure processing directory exists
file:
path: /opt/processing
state: directory
mode: '0755'
- name: Deploy latest scripts
copy:
src: files/process_job.sh
dest: /opt/processing/
mode: '0744'
Essential tools for ongoing management:
# System monitoring with htop
ssh user@remote "htop"
# Log watching with multitail
ssh user@remote "multitail /var/log/syslog"
# Automated backups with cron
0 3 * * * tar -zcvf /backups/$(date +\%Y-\%m-\%d).tar.gz /opt/processing
While basic, SSH remains the foundation of Linux remote administration. Modern tools can enhance this workflow:
# Multiplex SSH connections for faster repeated access
Host *
ControlMaster auto
ControlPath ~/.ssh/control:%h:%p:%r
ControlPersist 1h
Consider these upgrades to traditional SSH+Vim workflows:
# Remote file editing with VS Code
code --remote ssh-remote+your_server /path/to/file
# Modern CLI file transfer alternatives
rclone copy ./local_file.txt remote_server:/remote/path
For configuration management, these tools prevent manual edits:
# Sample Ansible playbook for config management
- hosts: nightly_servers
tasks:
- name: Ensure config file exists
copy:
src: files/nginx.conf
dest: /etc/nginx/nginx.conf
owner: root
group: root
mode: '0644'
For complex changes, consider setting up:
# Using tmux for persistent sessions
tmux new -s maintenance
# Later reattach with:
tmux attach -t maintenance
Modern protocols offer better performance than traditional FTP:
# Using rsync for efficient transfers
rsync -avz -e ssh ./project user@server:/opt/project \
--exclude='*.tmp' --exclude='.git'
For those preferring GUI access:
# Cockpit web console installation
sudo apt install cockpit
sudo systemctl enable --now cockpit.socket
Automate routine checks:
# Simple monitoring script
#!/bin/bash
check_disk() {
ssh $1 'df -h | awk '\''/\/$/ {print $5}'\'' | tr -d "%"'
}
[ $(check_disk server1) -gt 90 ] && alert-admin