쉬운 클라이언트 측 솔루션 :
alias connect='ssh -t root@server "bash -o vi"'
이 실패합니다 루트의 쉘 초기화 스크립트를 명시 적으로 사용 set -o emacs
또는 세트 EDITOR
로 emacs
, 또는 루트의 경우 .initrc
파일가 호출하는 emacs
키 바인딩.
이 답변의 나머지 부분은 서버 측 솔루션에 관한 것입니다.
이것은 ssh
기계에 들어가서 다음을 사용할 때 작동 합니다 sudo -i
.
당신을 위해 /root/.bashrc
:
if [[ -n "$SUDO_USER" ]] && [[ -f /root/.bashrc-"$SUDO_USER" ]]; then
source /root/.bashrc-"$SUDO_USER"
fi
이를 통해 원하는대로 무엇이든 할 수 있는 개인 bashrc
파일 을 가질 /root/.bashrc-patrick
수 있습니다 set -o vi
.
이것을 다음과 같이 rc 파일을 선택하는 다소 순진한 접근 방식과 결합하십시오 $SSH_CLIENT
.
if [[ -n "$SUDO_USER" ]]; then
person="$SUDO_USER"
elif [[ -n "$SSH_CLIENT" ]]; then
case "$SSH_CLIENT" in
192.168.216.100*) person="joe" ;;
192.168.216.120*) person="patrick" ;;
192.168.216.150*) person="lindsey" ;;
esac
fi
if [[ -n "$person" ]] && [[ -f /root/.bashrc-"$person" ]]; then
source /root/.bashrc-"$person"
fi
이것은 항상 동일한 IP 주소에서 연결하는 경우에만 작동합니다 ...
사용중인 특정 SSH 키의 설명 필드를 사용하는 또 다른 방법은 SSH 에이전트를 서버로 전달하는 경우 작동합니다.
ssh_comment="$( ssh-add -L | grep -f /root/.ssh/authorized_keys | awk '{ print $NF '} | head -n 1 )"
서버에 연결하는 데 사용한 키의 설명 필드를 선택합니다. 은 head -n 1
당신이 당신의 키의 몇 가지가 일어날 경우에이 authorized_keys
파일을.
그런 다음 위 $ssh_comment
의 $SUDO_USER
접근 방식 과 마찬가지로 (주석 $ssh_comment
이 경로 이름 인 경우 정리가 필요할 수 있음) 접근 방식 case
과 같은 명령문을 통해 소스로 rc 파일을 선택하는 데 사용할 수 있습니다 $SSH_CLIENT
.
set -o vi
쉘을 제어하기 전에 자동으로 실행되는 어두운 OpenSSH 마법 .