Lees eerst deze how-tossh werkt standaard met poort 22 en met een wachtwoord. Dat moet eerst en vooral werken voordat je kunt beginnen met authenticatiesleutels. Als je op je server kunt inloggen met ssh user@server draait ssh op poort 22 als hij nu om een wachtwoord vraagt. Dan kun je ssh-copy-id user@server gebruiken om de eerder aangemaakte authenticatiesleutels naar de server te kopiëren. Daarbij vraagt ssh-copy-id een inlog en dat hoort zo want je voert een ssh-opdracht uit en dus moet je eerst inloggen. Eenmaal de sleutels gekopieerd zou een nieuwe ssh user@server je in de server moeten brengen zonder het wachtwoord te vragen. Let wel: afhankelijk van de Linux-variant van de server is het mogelijk dat inlogs via sleutels eerst geactiveerd moet worden in de /etc/ssh/sshd_config terwijl bij andere varianten dat al standaard aan staat. Kijk dat dus eerst na.
RSAAuthentication yes
PubkeyAuthentication yes
Je kunt ssh op een andere poort zetten door op de server de sshd_config te wijzigen en daar een andere poort op te geven. Let wel op: als je je server vanaf het internet wil benaderen via ssh moet je mogelijk diens firewallregels wijzigen. Dat geldt ook voor andere beveiligingen zoals fail2ban die je zou hebben draaien. Als je deze wijziging al uitgevoerd had, kom je nu tot de ontdekking dat
ssh user@host -p poort wel werkt maar dat ssh-copy-id geen poortparameter heeft. Het probleem is dat ssh-copy-id eigenlijk maar één argument verwacht en de rest negeert. Je moet de poortparameter dus samen met gebruiker en server in één argument duwen. Dat kan als volgt:
ssh-copy-id "user@server -p poort"
Let op de quotes! Die zorgen er hier voor dat ssh-copy-id maar één argument ziet. En op die manier kun je toch een poortnummer doorsluizen naar het onderliggende ssh-systeem.