# SSH **SSH (Secure Shell)** lets you securely connect to remote computers and run commands. Authentication uses passwords or public-key cryptography. Transfer files securely with `scp` or `rsync`. Tunnel arbitrary traffic through SSH connections for security and access through firewalls. SSH is the standard for remote system administration, development on servers, and secure file transfer. Every modern system runs an SSH server. Client tools: `ssh` (connect), `scp` (copy files), `ssh-keygen` (generate keys), `ssh-add` (manage keys). ```bash $ ssh user@host # connect to remote host $ ssh -i key.pem user@host # use specific private key $ scp file user@host:/path # copy file to remote $ ssh-keygen -t ed25519 # generate key pair ``` Public-key authentication is more secure than passwords. Generate a key pair, copy the public key to the server, and SSH uses it for authentication. You can also configure SSH tunneling, jump hosts, and multiplexing for advanced usage. ## Concepts 1. [[ssh-basics|Basics]] 2. [[ssh-key-generation|Key generation]] 3. [[ssh-configuration|Configuration]] 4. [[ssh-authentication|Authentication]] 5. [[ssh-port-forwarding|Port forwarding]] 6. [[ssh-copy-and-sync|Copy and sync]] 7. [[ssh-jump-hosts|Jump hosts]] 8. [[ssh-multiplexing|Multiplexing]] 9. [[ssh-agents|Agents]] 10. [[ssh-security|Security]] 11. [[ssh-server-configuration|Server configuration]] 12. [[ssh-troubleshooting|Troubleshooting]]