Guides for people who move files over FTP and SSH
Practical answers to the problems that show up when you work with real servers — written to be useful whichever client you use.
Basics
What the protocols are and how they differ — start here if FTP, FTPS and SFTP all sound like the same thing.
The ~/.ssh/config file
What goes in ~/.ssh/config on macOS, the first-match-wins rule that trips everybody up, and the handful of options worth setting — keepalives, Keychain passphrases, connection reuse and Include.
SFTP vs SCP vs rsync
Why scp is no longer recommended and what changed in OpenSSH 9, what SFTP does that scp cannot, when rsync is the only sensible answer, and how they all relate to plain SSH.
SSH Agent Forwarding
How SSH agent forwarding works, the security risks of forwarding standard sockets, and how Upshell runs a secure in-process agent to restrict key access per host.
2FA & Interactive SSH
How keyboard-interactive multi-factor authentication challenges work over SSH, and how to verify host identity during a TOTP challenge.
How-to
Step-by-step answers to the things people actually need to do on a server from a Mac.
SSH Keys & Keychain
How to generate an ed25519 key, install it on your server, and use it for SSH and SFTP from a Mac client — including what App Sandbox means for reading ~/.ssh and how passphrases are handled.
SSH Port Forwarding & Tunnels
How to configure local (-L), remote (-R), and dynamic (-D) SOCKS5 port forwarding on macOS, and manage tunnels through a visual client instead of the terminal.
Renaming SSH Tabs & Colors
How to temporarily rename SSH tabs and set custom environment tags and tinting colors in Upshell to easily manage multiple sessions connected to the same host.
SSH key permissions error
Why SSH refuses to use a private key whose permissions are too open, the exact chmod commands that fix it on macOS, and the server-side version of the same problem that fails silently.
Host key verification failed
What the changed host key warning actually means, the two harmless reasons and the one dangerous one, how to verify a new fingerprint properly, and why ssh-keygen -R should not be your first move.
SSH keeps disconnecting
Client-side keepalives, the server-side settings that override them, why "Broken pipe" and "Connection reset by peer" mean different things, and what happens to a session when a Mac goes to sleep.
SSH tunnel to a database
How to reach a Postgres or MySQL server that only listens on localhost, why 127.0.0.1 and localhost are not interchangeable for MySQL, and how to keep the tunnel up while you work.
SSH bastion & ProxyJump
How to reach a server that only answers through an SSH jump host — what ProxyJump does, how to write it in ~/.ssh/config, and how to do it from a Mac GUI client instead of the terminal.
Upshell — the native SSH & SFTP client for macOS
Tabs & split terminal, SOCKS5 port forwarding, ProxyJump bastions, secure in-process agent, and co-session SFTP file transfers. Free to download, no subscription.