A única maneira que posso ver, após uma breve verificação dos manuais ssh
e sshd
, para este arquivo não ser executado por meio de uma alteração no cliente SSH é usando uma chave separada para autenticar com o host.
A execução de ~/.ssh/rc
pode ser desativada configurando a opção no-user-rc
no arquivo ~/.ssh/authorized_keys
para as chaves específicas que um usuário pode usar.
O arquivo pode normalmente se parecer com isto:
ssh-ed25519 AAAASOMEKEYSIGNATUREHERE myself@somehost
Isso pode ser complementado com as opções descritas no manual sshd
:
no-user-rc ssh-ed25519 AAAASOMEKEYSIGNATUREHERE myself@somehost
E outra chave diferente pode ser adicionada quando o arquivo rc
for executado:
no-user-rc ssh-ed25519 AAAASOMEKEYSIGNATUREHERE myself@somehost
ssh-ed25519 AAAASOMEDIFFERENTKEYSIGNATUREHERE myself@somehost
Localmente, você se conectaria com chaves separadas dependendo se você queria executar o arquivo rc
ou não, possivelmente usando a seguinte configuração em ~/.ssh/config
:
Host myhost
Hostname theremote.host
User myself
IdentityFile %d/.ssh/id_ed25519
Host myhost-norc
Hostname theremote.host
User myself
IdentityFile %d/.ssh/id_ed25519-norc
Onde a assinatura da chave em ~/.ssh/id_ed25519-norc
corresponderia à assinatura de chave no-user-rc
.
Isso parece bastante complicado, mas eu honestamente não consegui encontrar outra maneira de evitar a execução do arquivo rc
. Outra opção seria, como Gilles sugere , deixar o arquivo rc
ignorar o que está fazendo com base em alguns variável de ambiente, e em vez disso, chame /etc/ssh/sshrc
como normalmente seria feito se o arquivo rc
não existisse (o sshd
manual diz que se /etc/ssh/sshrc
também não existir, então xauth
é usado, veja a sshd
manual para mais informações).