ssh mas mantém o diretório de trabalho atual

4

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?

    
por jhourback 13.03.2012 / 23:27

4 respostas

3

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"
    
por 30.05.2017 / 10:28
2

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.

    
por 14.03.2012 / 00:03
2

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
    
por 07.04.2014 / 17:47
0

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.

    
por 14.03.2012 / 00:41

Tags