ssh ma mantenere la directory di lavoro corrente

Desidero spesso ssh in un altro server, ma conservo la mia directory di lavoro. (Tutti i nostri server hanno gli stessi NFS e pertanto lo stesso path directory esiste solitamente su tutti i server.) È ansible farlo?

  • Utilizzando uno script shell per verificare se rsync ha apportto modifiche
  • Come eliminare tutte le mail locali da un account di sistema?
  • Come abilitare il colore in Vim su SSH?
  • Qual è il bit appiccicoso nei file system UNIX? Quando viene utilizzato?
  • Come posso assegnare indirizzi IP univoco alle directory di origine in Linux?
  • Monitoraggio TCP su un server: confronto netstat vs lsof?
  • Come get il puro process appena iniziato
  • Perché non posso ssh nella mia nuova istanza EC2?
  • 4 Solutions collect form web for “ssh ma mantenere la directory di lavoro corrente”

    Personalmente non mi piace l' alias ssh . Il minor numero di caratteri che ho trovato per eseguire il lavoro è:

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

    Se il server remoto è stato preconfigurato (in sshd_config) con

     AcceptEnv CURRENT_DIR 

    E lei include

     cd "$CURRENT_DIR" 

    come ultima row nei server remoti '~ .bashrc, è ansible connettersi

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

    È una soluzione alternativa, ma functionrà.

    Ho trovato una bella soluzione su superuser.com che è molto simile alla soluzione @ adaptr ma senza impostare manualmente la variabile di ambiente.

    Creando un alias per ssh è ansible impostare automaticamente quella variabile:

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

    Configurare ssh in ~/.ssh/config per submit la variabile SSH_PWD :

    Per un singolo host aggiungere questo:

     Host myhost SendEnv SSH_PWD 

    Oppure per tutti gli host, aggiungilo alla parte inferiore del file:

     SendEnv SSH_PWD 

    E sul server remoto nel tuo .profile o .bashrc :

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

    Se non è ansible modificare la configuration dei server remoti e utilizzare gli account di accesso SSH basati su chiavi con un ssh-agent (risparmiando così di wherer inserire la password o la chiave di accesso each volta), un altro approccio hackish:

    Nella macchina locale, creare uno script wrapper che è nel tuo path (ad es. /usr/local/bin/cdssh )

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

    Sulla macchina remota, aggiungere la parte seguente al tuo file ~/.bashrc o ~/.profile :

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

    Ovviamente, questo è un hack selvaggio, ma funziona.

    Suggerimenti per Linux e Windows Server, quali Ubuntu, Centos, Apache, Nginx, Debian e argomenti di rete.