.profile / .bashrc와 동등한 SSH 모든 컴퓨터에서

ssh 서버의 세션 내에서 일부 별칭을 자동으로 정의하는 방법을 찾고 있습니다. 내가 .bashrc로그인 한 사용자 계정은 다른 사람들과 공유하고 수십 개의 계정이 있으며 모든 컴퓨터에서 스크립트를 유지 관리하는 것이 어려울 수 있기 때문에 서버 의 파일에 파일을 넣을 수 없습니다 . expect별칭을 자동으로 입력하는 데 사용할 수 있다는 것을 알고 있지만 OpenSSH에 이것을 구현하는 데 사용할 수있는 내장 기능이 있는지 궁금합니다.



답변

기대하는 데 아무런 문제가 없습니다. 내가 한 다른 방법은 스크립트를 사용하여 매우 더럽습니다. 먼저 실행하려는 프로파일을 scp 한 다음 ssh in, run 및 연결 상태를 유지하십시오.

따라서 모든 프로파일 설정을 로컬 파일 .<local username>-<hostname>-init.sh에 배치하고 아래 스크립트를 실행하여 원격 호스트에 로그인하십시오.

#!/bin/sh
[ $# -eq 0 ] && { echo "syntax: $0 <host> [<ssh-option>...]" 1>&2 ; exit 1 ; }
host=$1 ; shift    # use any remaining args as ssh options
initfile=".$USER-`hostname`-init.sh"
scp -q ~/.ssh-init.sh "$host:/var/tmp/$initfile"
ssh -t "$@" $host "bash --rcfile /var/tmp/$initfile"

답변

구성을 입력 .bashrc하고 로그인 할 때만 구성 할 수 있습니다.이를 가능하게하기 위해 ssh를 통해 환경 변수를 전달할 수 있습니다.

.bashrc 수정

# common stuff
if [ -n "$IAMTHEGREATEST" ]; then
  # my personal cool stuff
fi;
# other global stuff

sshd_config 수정 :

AcceptEnv ... IAMTHEGREATEST

.ssh/config 수정 (클라이언트 측) :

Host ...
  SendEnv IAMTHEGREATEST

.bashrc 수정 (클라이언트 측) :

alias ssh='IAMTHEGREATEST="forsure" ssh'

(추천하지만해야합니다)


답변

로부터 SSH (1) 당신이 파일을 만들 경우 매뉴얼 페이지 ~ / 스푸핑 / RC를 사용자의 로그인 쉘하여 로그인하기 전에 ‘사전 설정’작업을 할 수있는 기회를 제공, 실행하기 전에 실행됩니다 .. 주어진 예는 로그인하기 전에 네트워크 공유를 마운트하는 것입니다.

개별 ~ / .ssh / rc 파일 을 사용하지 않으려면 / etc / ssh / sshrc로도 동일한 작업을 수행 할 수 있습니다 . 특정 사용자 이름 또는 일부 식별 방법을 확인하기위한 빠른 테스트는 다른 사용자가이를 인식하지 못하도록 제한 할 수 있습니다.

~ / .ssh / rc 가 존재하지 않는 경우에만 / etc / ssh / sshrc 가 소스 되므로 두 계층의 복잡성을 효과적으로 달성 할 수 있습니다.


답변

별명은 쉘에 의해 정의되고 해석됩니다.

불행히도 ssh그것들을 원격 쉘로 전달할 방법이 없습니다 .

ssh클라이언트 측에 랩퍼를 작성 하여 원격 측에 멋진 환경을 설정할 수는 있지만 예쁘지 않습니다.


답변

가능하다면 모든 곳에서 액세스 가능한 서버에서 원하는 모든 것을 초기화 / 정의하고 각 서버에서 로그인 한 후 실행하는 작은 스크립트를 저장합니다.


답변

가능한 한 가지 해결책은 모든 다른 서버가 액세스 할 수있는 웹 서버에 모든 것을 설정하는 스크립트를 배치하는 것입니다.

그런 다음 각 서버는 다음과 같은 작업을 수행하기 위해 작은 스크립트가 필요합니다.

wget http://myserver.com/myawesomescript.sh
chmod +x myawesomescript.sh
./myawesomescript.sh

그렇게하면 한 곳에서만 업데이트하면됩니다.