Back to Blog

Why ProSSH Can Connect Where Other iOS SSH Clients Can't

| BudgetSoft | 3 min read | Guides

Not all SSH servers are the same. A modern Ubuntu server supports the latest ciphers and key exchange algorithms. But the Cisco switch in your server rack, the macOS machine at your desk, or that legacy CentOS box in production — they can be a different story.

ProSSH is built to connect to all of them.

The cipher problem

SSH encrypts traffic using a cipher that both client and server agree on during the handshake. Modern servers support ciphers like ChaCha20-Poly1305 and AES-256-GCM — fast, secure, and widely implemented.

But older devices often only support AES-CTR mode ciphers with separate HMAC authentication:

  • aes128-ctr with hmac-sha1 or hmac-sha2-256
  • aes256-ctr with hmac-sha1 or hmac-sha2-256

Many iOS SSH clients only implement the modern AEAD ciphers. When they encounter a server that only speaks AES-CTR, the connection fails with a cryptic handshake error.

Who still uses AES-CTR?

More devices than you'd think:

  • Network equipment — Cisco IOS, Juniper JunOS, older firmware versions
  • Embedded systems — IoT devices, NAS units, industrial controllers
  • Legacy Linux — CentOS 6/7, older RHEL, systems with outdated OpenSSH
  • Appliances — firewalls, load balancers, storage controllers

If you manage infrastructure, you'll run into these. ProSSH now supports all four AES-CTR + HMAC combinations, so these connections just work.

The macOS auth problem

This was a subtle one. When you SSH into a Mac — especially one that hasn't been unlocked yet — macOS advertises keyboard-interactive,publickey as its available authentication methods.

The problem: keyboard-interactive is an interactive challenge-response protocol that most SSH libraries (including the one ProSSH is built on) don't implement. And since password isn't listed as available, the client would give up and sit there — no error, no timeout, just a hung connection.

The fix

The SSH RFC actually permits clients to attempt any auth method regardless of what the server advertises. ProSSH now always tries password authentication on the first attempt, even if the server doesn't list it. Turns out macOS accepts it just fine — it just doesn't advertise it.

We also added a 30-second authentication timeout as a safety net. If a server truly doesn't support any of ProSSH's auth methods, you'll get a clear timeout error instead of an infinite hang.

What ProSSH supports

Ciphers

  • ChaCha20-Poly1305
  • AES-256-GCM
  • AES-128-GCM
  • AES-256-CTR + HMAC-SHA2-256
  • AES-256-CTR + HMAC-SHA1
  • AES-128-CTR + HMAC-SHA2-256
  • AES-128-CTR + HMAC-SHA1

Authentication

  • Password
  • Public key (Ed25519, RSA, ECDSA)
  • Key with passphrase

Key Exchange

  • Curve25519
  • ECDH (NIST curves)

This covers the vast majority of SSH servers in the wild — from brand new cloud instances to decade-old network gear.

The bottom line

If you've tried another iOS SSH client and couldn't connect to a specific device, ProSSH is worth a try. We've specifically invested in compatibility with the long tail of SSH implementations that other clients overlook.

ProSSH is €14.99 on the App Store. One-time purchase, no subscriptions.

Related posts