.profile / .bashrc와 동등한 SSH


14

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

답변:


7

기대하는 데 아무런 문제가 없습니다. 내가 한 다른 방법은 스크립트를 사용하여 매우 더럽습니다. 먼저 실행하려는 프로파일을 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"

서버에서 특별한 구성이 필요하지 않기 때문에 이것을 좋아합니다.
라몬

4

구성을 입력 .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'

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


이것이 OP가 로그인하는 서버에서 자동으로 설정하는 목표를 어떻게 달성합니까?
울다

그렇지 않습니다. 그것은 "내가 로그인 한 사용자 계정이 다른 사람들과 공유된다"는 문제를 해결합니다.
krissi

이것은 거의 내가하는 일이지만 한 가지 차이점이 있습니다. 외부에서 환경 변수를 수락하는 대신 SSH 키 자체에서 설정했습니다. 이것은 .ssh / authorized_keys에 environment = "IAMTHEGREATEST = forsure"로 시작하는 줄이 포함되어 있음을 의미합니다.
Bron Gondwana

3

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

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

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


딩 딩 딩-우리는 승자가 있습니다!
추후 공지가있을 때까지 일시 중지되었습니다.

그 하나를 놓쳤다! 호소력이있는 것처럼 보이지만 여전히 서버 측에 각 서버를 개별적으로 설정해야합니까?
라몬

yup, 서버 쪽이지만 파일 하나를 한 번만 scp하면됩니다. 로그인 즉시 처리 할 명령 스트림을 보내는 쉬운 방법은 없습니다. {Grin} 그래도 조금 써주세요, 아마도 뭔가를 써주세요 ... {오늘은 아닙니다!}
lornix

2

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

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

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


0

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


0

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

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

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

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


-3

.ssh / config를보십시오

다음은 https://lookherefirst.wordpress.com/2007/12/17/a-simple-ssh-config-file/ 의 예입니다.


이것이 도움이된다고 생각하는 이유에 대한 자세한 내용을 알려주십시오.
Zoredache

우리는 답변이 내용을 가리키는 포인터가 아닌 내용을 포함하는 것을 선호합니다. 이 이론적으로 질문에 대답 할 수 있습니다 동안, 바람직 할 것이다 여기에 대한 대답의 본질적인 부분을 포함하고 참조 할 수 있도록 링크를 제공합니다.
user9517
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.