Comando remoto no arquivo de configuração ssh

12

Gostaria de definir o ssh_config para que, depois de digitar, ssh my_hostnameacabe na pasta específica. Assim como eu digitaria cd /folder/another_one/much_much_deeper/.

Como posso conseguir isso?

EDITAR. É ter sido marcada como duplicada de "How to ssh para dir ..." mas é não a minha pergunta.

Eu sei que posso executar qualquer comando seguindo-os ao sshcomando. Minha pergunta é sobre o /ssh_configarquivo, não o comando.

Kazz
fonte
Eu esclareci minha pergunta.
Kazz
Não há nada nisso man ssh_config. O mais próximo é LocalCommand, mas não pode ser usado para comando interativo.
lgeorget
1
Por favor, você poderia explicar (em sua pergunta) por que acha que a mudança deve ser feita ssh_config? Provavelmente existem lugares melhores para configurar o diretório inicial e seria útil entender por que existe essa restrição específica em uma possível solução.
roaima
1
O fato de "isso não pode ser feito em ssh_config" não faz disso uma duplicata de "faça isso no Bash". "Você não pode fazer isso" é uma resposta perfeitamente válida.
Franklin Yu
1
@terdon No entanto, o fato de "não é possível" pode mudar com o tempo. Sim, é possível agora. Agora eu (assim como qualquer pessoa que venha a ver isso no futuro) precisa de uma nova resposta e ficamos presos aqui. Se isso não for reaberto, imagino que o caminho desejado seja criar uma nova pergunta (e respondê-la)?
Franklin Yu

Respostas:

19

Não havia uma maneira de fazer isso, até o OpenSSH 7.6 . Do manual :

RemoteCommand

Especifica um comando para executar na máquina remota após conectar-se com êxito ao servidor. A cadeia de comando se estende até o final da linha e é executada com o shell do usuário. Argumentos para RemoteCommandaceitar os tokens descritos na seção TOKENS .

Então agora você pode ter

RemoteCommand cd /tmp && bash

Foi introduzido neste commit .

Franklin Yu
fonte
5
Adicione RequestTTY forcese o comando remoto exigir um TTY. Por exemplo:tmux new -As my-session
Aaron Blenkush
Esta é a sshopção matadora Obrigado!
nhed
Isso impossibilita a execução de outros comandos, por exemplo ssh my_hostname lsfalhará Cannot execute command-line and remote command.. Faz com que outras ferramentas que usam ssh como git e rsync também falhem.
Remram
2

Eu gostaria de definir o ssh_config para depois de digitar ssh my_hostname

Não é possível. Não há opção para conseguir isso ssh_config. O mais próximo é configurar um alias do bash ou uma função do bash, como

myssh() {
    ssh -t $1 "cd /dir/; bash"
}
Jakuje
fonte
1

Eu respondi com um ingresso diferente antes que Somoene apontasse que este era o original.

Se estiver usando um mac, minha recomendação é usar o iTerm2 e criar um perfil. Coloque ssh my_hostnamena linha de comando e adicione o comando cd /folder/another_one/much_much_deeper/no campo enviar texto no início. Quando você se conectar às sessões, ele será ssh no seu nome de host e cd no diretório no seu caso, ou executar um comando.

Govna
fonte