Não há uma solução bonita, mas é possível usar uma seção Match exec
em ssh_config
.
De man ssh_config
:
The exec keyword executes the specified command under the user's shell. If the command returns a zero exit status then the condition is considered true. Commands containing whitespace characters must be quoted. The following character sequences in the command will be expanded prior to execution: ‘%L’ will be substituted by the first component of the local host name, ‘%l’ will be substituted by the local host name (including any domain name), ‘%h’ will be substituted by the target host name, ‘%n’ will be substituted by the original target host name specified on the command-line, ‘%p’ the destination port, ‘%r’ by the remote login username, and ‘%u’ by the username of the user running ssh(1).
Isso significa que podemos deixar ssh
executar /usr/bin/test
para corresponder à porta (aqui 2222):
Match host "your_host" exec "test 2222 -eq %p"
User another_user
Como alternativa, você pode definir um apelido / alias para o seu servidor SSH na outra porta:
Host server_with_other_port
Port 2222
User another_user
Então você pode se conectar ao segundo servidor SSH usando ssh server_with_other_port
e a porta padrão diferente e o nome de usuário padrão serão aplicados.
A ressalva da solução de alias é que o nome de usuário padrão só é aplicado se você usar o alias, não se você usar o nome real do servidor ou o endereço IP.