SSH를 통해 원격 서버에 로그인할 때 디렉토리를 변경하고 bash 옵션을 설정하려면 어떻게 해야 합니까?

SSH를 통해 원격 서버에 로그인할 때 디렉토리를 변경하고 bash 옵션을 설정하려면 어떻게 해야 합니까?

나는 정기적으로 SSH를 통해 원격 호스트에 로그인해야 하며 bash 옵션을 사용하는 것을 좋아하며 일반적으로 특정 디렉토리에 set -o vi로그인해야 합니다 . cd이러한 호스트는 일시적이므로(정기적으로 생성 및 삭제됨) 해당 호스트에 로그인하여 /에 저장할 수 .bash_profile없습니다 .bashrc. 그래서 SSH를 통해 연결할 때 원격 서버에 연결할 때마다 동일한 명령을 입력할 필요가 없도록 이를 수행할 수 있는 방법을 찾고 있었습니다. 나는 이것을 달성하기 위해 여러 가지 방법을 시도했지만 그 중 아무것도 작동하지 않는 것 같습니다. 누군가 이 명령을 올바르게 수행하도록 도와줄 수 있나요? 한마디로 내가 하고 싶은 일은 이것이다.

  1. cd특정 디렉토리로
  2. 배쉬 옵션 설정set -o vi

내가 시도한 방법은 다음과 같습니다.

ssh [email protected] -t "cd /data; exec bash --login -c \"set -o vi\""

이것이 실제로 작동한다고 생각하지만 명령이 set -o vi실행되면 다음과 같은 메시지와 함께 세션 연결이 끊어지기 때문에 SSH 세션이 종료됩니다.

Remotehost.com에 대한 공유 연결이 종료되었습니다.

이러한 명령을 실행한 후에 세션을 열어두는 방법이 있습니까, 아니면 원하는 것을 달성할 수 있는 다른 방법이 있습니까?

답변1

일부 옵션:

ssh -t [email protected] 'cd /data && exec bash --login -o vi'

ksh(이것은 / zsh/ dash... 를 포함한 모든 POSIX 유사 쉘에서 작동하며 -oPOSIX sh유틸리티 의 표준 옵션이며 vi표준 옵션 중 하나입니다. 해당 명령줄은 Bourne을 포함한 모든 주요 쉘 제품군의 쉘과도 호환됩니다. csh, rc, fish는 루트 사용자의 로그인 셸에 관계없이 작동해야 합니다)

또는:

SSH -t[이메일 보호됨]'cd /data && exec env SHELLOPTS=vi bash --login'

사실, 당신은 두 번째 것을 사용하고 싶지 않습니다. 이는 $SHELLOPTS변수가 환경에 있고 모든 bash호출에 영향을 미친다는 것을 의미합니다(그리고 비대화형 변수는 모든 종류의 문제를 일으키는 대화형 쉘의 변수를 상속합니다).

또한 에는 두 가지 옵션 세트가 있다는 점에 유의하세요 . 하나는 / bash로 설정 하고 다른 하나는 / 로 설정합니다 .-o$SHELLOPTS-O$BASHOPTS

답변2

두 가지 명령을 수행하십시오.

  1. 원격 호스트에서 실행할 명령을 파일에 넣습니다 .bashrc.tmp.
  2. $ scp .bashrc.tmp [email protected]:
  3. $ ssh <options> [email protected] "bash --login --rcfile ${HOME}/.bashrc.tmp"

이렇게 하면 원본을 백업할 필요조차 없습니다 .bashrc.

답변3

호스트의 한 폴더에서 다른 폴더로 쉽게 이동하려면 apparix를 설치하고 점프해야 하는 여러 위치에 북마크를 설정한 다음 to folderXapparix에서 사용할 수 있습니다.https://micans.org/apparix/man/apparix.html

답변4

나는 공유된 사용자 ID로 원격 시스템을 사용하고 있으므로 시작 파일을 편집하고 싶지 않습니다. 왜냐하면 다른 모든 사람에게도 영향을 미치기 때문입니다. vi하지만 여기에 게시한 내용을 통해 제가 원하는 옵션을 설정하는 방법을 알 수 있었습니다 . 내 ~/.ssh/config파일 에 넣은 내용은 다음과 같습니다.

Host testsystem
User tester
RequestTTY yes
RemoteCommand exec /bin/bash --login -o vi

이는 매우 간단합니다. 당신이 원하는 "cd" 부분에 대해서는 모르겠습니다.

관련 정보