ssh mais conservez le directory de travail actuel

Je souhaite souvent ssh dans un server différent, mais conserve mon directory de travail. (Tous nos servers ont le même NFS et, par conséquent, le même path de directory existe généralement sur tous les servers.) Est-il possible de le faire?

Personnellement, je n'aime pas alias ssh . Le plus petit nombre de personnages que j'ai trouvé pour faire le travail est:

 ssh user@hostname -t "cd $PWD;bash" 

Si le server distant a été préconfiguré (dans sshd_config) avec

 AcceptEnv CURRENT_DIR 

Et vous incluez

 cd "$CURRENT_DIR" 

comme dernière ligne dans les servers distants ~ / .bashrc, vous pouvez vous connecter avec

 CURRENT_DIR="$PWD" ssh user@host -o SendEnv=CURRENT_DIR 

C'est une solution de contournement, mais ça va … travailler.

J'ai trouvé une bonne solution sur superuser.com qui ressemble beaucoup à la solution d'adaptation d'Adaptr, mais sans configurer manuellement la variable d'environnement.

En créant un alias pour ssh vous pouvez définir cette variable automatiquement:

 alias ssh='env SSH_PWD="$PWD" /bin/ssh' 

Configurez ssh dans ~/.ssh/config pour envoyer la variable SSH_PWD :

Pour un seul hôte, ajoutez ceci:

 Host myhost SendEnv SSH_PWD 

Ou pour tous les hôtes, ajoutez ceci au bas du file:

 SendEnv SSH_PWD 

Et sur le server distant dans votre .profile ou .bashrc :

 if [ -n "$SSH_PWD" ] && [ -d "$SSH_PWD" ]; then cd "$SSH_PWD" unset SSH_PWD fi 

Si vous ne pouvez pas modifier la configuration des servers distants et utiliser les connections SSH basées sur les keys avec un ssh-agent (vous épargnant ainsi d'entrer votre mot de passe ou mot de passe key à chaque fois), une autre approche hacking:

Sur votre machine locale, créez un script wrapper qui se trouve sur votre path (p. Ex. /usr/local/bin/cdssh )

 #!/bin/bash TMPFILE="/tmp/$(basename $0).$$.tmp" echo "cd `pwd`" > $TMPFILE scp -q $TMPFILE $1:~/.cwdfile ssh $@ rm $TMPFILE 

Sur la machine distante, ajoutez la partie suivante à votre ~/.bashrc ou ~/.profile :

 if [ -f ~/.cwdfile ]; then cd ~/.cwdfile rm ~/.cwdfile fi 

Évidemment, c'est un hack sauvage, mais ça marche.