ssh intègre une sécurité basé sur les "host keys". Ce sont des identifiants de machines stockés dans ~/.ssh/known_hosts. Si cet identifiant change ssh nous previens qu'il y a peut-être une attaque par ip spoofing[1]. Si le paramètre StrictHostKeyChecking est positionné, on ne pourra alors même pas se connecter à un tel hôte.

Hors dans la configuration suivante, ou une passerelle fait du renvoi de port vers plusieurs machines d'un reseau local, on peux avoir deux identifiant differents associés à la même adresse publique. Le premier sera ajouté au fichier known_hosts mais on ne pourra plus se connecter sur le deuxième. reseau Heureusement, ssh nous permet de changer ses paramètres de configuration à la volée en les passant en ligne de commande. Ce qui nous donnera alors : # pour se connecter sur xubuntu
ssh -p 1234 userx@addr.publique.com
# pour kubuntu
ssh -p 1235 -o "StrictHostKeyChecking=no" userk@addr.publique.com

On notera que si l'on utilise sshfs, on peux utiliser la même option : sshfs -p 1235 -o "StrictHostKeyChecking=no" userk@addr.publique.com:/data /data

Edit

Pour résoudre ce problème, il existe en fait une solution beaucoup plus maligne. On peux en effet avoir plusieurs clefs pour un seul host. Il nous suffit donc de stocker les clefs des deux machines dans notre fichier ~/.ssh/known_host :
# sur kubuntu :
cat /etc/ssh/ssh_host_rsa_key.pub
ssh-rsa AAAAB3...YK58=
# sur le portable :
grep addr.publique.com ~/.ssh/known_hosts
addr.publique.com ssh-rsa AAAAB3...YK58=
addr.publique.com ssh-rsa AAAAB3...zmpU=
a lire, un article très bien fait sur SecurityFocus

Notes

[1] c'est à dire qu'on se connecte sur un host qui se fait passer pour un autre