ssh에서 작업 디렉토리 유지


6

NFS를 통해 홈 디렉토리를 마운트하는 많은 Linux 시스템이 있습니다. ~ / foo / bar / baz에 있다면 다른 컴퓨터로 ssh하고 자동으로 작업 디렉토리로 사용하기를 원합니다. 이 작업을 수행하는 쉬운 방법은 없습니다. 나는 해킹 된 것들을 생각할 수 있지만 시도하기 전에 확인하고 싶습니다.



2
Joe 님의 프로필 페이지에서 Su를 종료한다고 말합니다. 위와 같은 의견으로 얼마나 더 오래 살 수 있는지 물어봐도 될까요?
innaM

답변:


5

SendEnv (in ssh_config) 및 AcceptEnv (in sshd_config)를 확인하십시오. PWD를 보낼 수 있습니다. 그러나 수신 측에서 PWD를 얻는 것만으로는 원하는 디렉토리에서 새 쉘을 시작하기에 충분하지 않습니다.

그래서 당신은 다음과 같은 것을 할 수 있습니다 :

  1. 넣어 SendEnv SSH_PWD당신에 ssh_configAcceptEnv SSH_PWD당신을에 sshd_config.
  2. .profile 또는 .bash_profile에 다음을 추가하십시오.

:

alias ssh='env SSH_PWD="$PWD" /bin/ssh'
if [ -n "$SSH_PWD" ]; then
   cd "$SSH_PWD"
   unset SSH_PWD
fi

(sshd_config 맨 페이지의 AcceptEnv 참조 : manpagez.com/man/5/sshd_config )
BrianH

이것은 당신이 ssh하는 기계에 대한 루트 액세스 권한이있는 경우에만 작동합니다.
Erik

예, 일반적으로 sshd_config를 편집하려면 루트 액세스 권한이 필요합니다. 그러나 일단 완료되면 루트는 필요하지 않습니다.
Heath

디렉토리가 존재하는 경우 에만 if [ -n "$SSH_PWD" ]; then로 변경하십시오 . if [ -n "$SSH_PWD" ] && [ -d "$SSH_PWD" ]; thencd
코엔.

1

이 bash 함수는 어떻습니까 (bash가 실제로 쉘이라고 가정) :

sshcd() {
    CWD=`pwd`
    HOME_BASED=${CWD#$HOME}
    ssh -t $1 "cd ~$HOME_BASED;bash -l"
}

그런 다음 sshcd foobarssh를 foobar로 변경하고 디렉토리를 변경하고 bash를 실행할 수 있습니다.


그래도 당신에게 완전한 껍질을 줄 수 있습니까? 로그인하면 .bash_profile 또는 .bash_rc가 실행됩니까?
BrianH

내 테스트에서 않습니다. 적어도 내 .bashrc는 소스가됩니다.
innaM

쿨-테스트 할 리눅스 박스가 없습니다. AIX / Unix에서 테스트했지만 작동하지 않습니다 (dir에 대한 로그인 및 cd가 작동했지만 일반적인 프롬프트가 아닌 $ 프롬프트가 나타납니다).
BrianH

"bash"를 "bash -l"로 변경하십시오. 이 옵션은 어쨌든 해를 끼치 지 않기 때문에 대답을 편집 할 것입니다.
innaM

나는이 방법을 zsh와 함께 시도하고 작동하는지 확인할 수 있습니다.
Erik

0

이것이 "해키"인지 아닌지는 모르겠지만 아이디어는 다음과 같습니다.

homedir은 모든 서버에서 공유되므로 로그인시 동일한 프로파일이 실행됩니다. 하단에 .profile이 다음과 같은 작업을 수행하도록 할 수 있습니다.

CURR_DIR=$(cat ~/.current_dir)
if [[ -n $CURR_DIR ]] && [[ -d $CURR_DIR ]]; then
  cd $CURR_DIR
fi

그런 다음 SSH 명령의 별명을 지정하여 SSH 명령을 실행 ~/.current_dir하기 전에 현재 디렉토리를 파일에 넣는 스크립트를 실행 ~/.current_dir하고 SSH 연결이 닫히면 파일을 제거하십시오 .

나는 이것을 테스트하지는 않았지만 출발점이 될 수 있습니다.

행운을 빕니다!


0

다음을 사용할 수 있습니다.

#!/bin/sh
set -eu
gnome-terminal -x ssh -t "$@" "cd $PWD && $SHELL -il"

코드 나 명령을 입력하는 경우 4 개의 공백으로 줄을 시작하십시오.
랜덤
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.