Eu pessoalmente não gosto de alias ssh
.
O menor número de caracteres que encontrei para fazer o trabalho é:
ssh user@hostname -t "cd $PWD;bash"
Muitas vezes eu quero ssh em um servidor diferente, mas mantenho meu diretório de trabalho. (Todos os nossos servidores têm o mesmo NFS e, portanto, o mesmo caminho de diretório geralmente existe em todos os servidores.) É possível fazer isso?
Eu pessoalmente não gosto de alias ssh
.
O menor número de caracteres que encontrei para fazer o trabalho é:
ssh user@hostname -t "cd $PWD;bash"
Se o servidor remoto foi pré-configurado (em sshd_config) com
AcceptEnv CURRENT_DIR
E você inclui
cd "$CURRENT_DIR"
como a última linha nos servidores remotos ~ / .bashrc, você pode se conectar com
CURRENT_DIR="$PWD" ssh user@host -o SendEnv=CURRENT_DIR
É uma solução, mas vai ... funcionar.
Encontrei uma boa solução no superuser.com que é muito parecido com a solução @ adaptr, mas sem definir manualmente a variável de ambiente .
Ao criar um alias para ssh
, você pode definir essa variável automaticamente:
alias ssh='env SSH_PWD="$PWD" /bin/ssh'
Configure o ssh em ~/.ssh/config
para enviar a variável SSH_PWD
:
Para um único host, adicione isso:
Host myhost
SendEnv SSH_PWD
Ou para todos os hosts, adicione isso ao final do arquivo:
SendEnv SSH_PWD
E no servidor remoto no seu .profile
ou .bashrc
:
if [ -n "$SSH_PWD" ] && [ -d "$SSH_PWD" ]; then
cd "$SSH_PWD"
unset SSH_PWD
fi
Se você não puder alterar a configuração dos servidores remotos e usar logins SSH baseados em chave com um ssh-agent
(evitando assim que você digite sua senha ou frase secreta toda vez), outra abordagem hackeada:
Na sua máquina local, crie um script de wrapper que esteja no seu caminho (por exemplo, /usr/local/bin/cdssh
)
#!/bin/bash
TMPFILE="/tmp/$(basename $0).$$.tmp"
echo "cd 'pwd'" > $TMPFILE
scp -q $TMPFILE $1:~/.cwdfile
ssh $@
rm $TMPFILE
Na máquina remota, adicione a seguinte parte ao seu ~/.bashrc
ou ~/.profile
:
if [ -f ~/.cwdfile ]; then
cd ~/.cwdfile
rm ~/.cwdfile
fi
Obviamente, este é um truque selvagem, mas funciona.