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?

  • C'è un'edizione Server CentOS e un'edizione desktop separata?
  • Perché più utenti sono connessi rispetto a quelli esistenti?
  • È "sudo su" considerato una ctriggers pratica?
  • Come aggiungere un utente di linux con una password random o non valida da uno script
  • Come get un count del panico del kernel
  • Ambiente di aggiornamento AIX dopo la modifica .profile
  • sudo: nessun tty presente e nessun programma askpass specificato
  • Le autorizzazioni di impostazione di Unix su un'intera cartella
  • 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.