현재 있는 폴더를 기반으로 원격 호스트에 자동으로 SSH 연결

현재 있는 폴더를 기반으로 원격 호스트에 자동으로 SSH 연결

로컬 OS의 폴더를 기반으로 원격으로 SSH를 실행할 수 있는 솔루션(또는 zsh 플러그인)이 있습니까? PyENV와 유사합니다.

그래서 프로젝트를 개발하고 실행하면

cd /home/projects/ERP
ssh production
ssh development

그렇게 하면 기억하기 쉬운 명령을 사용하여 원하는 원격 호스트로 직접 이동할 수 있습니까?

디렉터리를 전환할 때 별칭을 만들고 로컬 폴더에서 로드할 수 있다는 것을 알고 있지만 더 좋은 방법이 있습니까?

고마워요, 드미트리

답변1

분명히 설명을 요청하는 댓글을 게시할만큼 평판이 충분하지 않으므로 여기서는 추측일 뿐이며 불완전한 경우 필요에 따라 답변을 편집하십시오.

나는 그런 플러그인을 알지 못하지만 하나를 작성하는 것은 그리 어렵지 않을 것입니다. 귀하의 사용 사례는 일반적이지 않으므로 이것이 올바른 선택일 수 있습니다. 이를 수행하는 방법에는 약 5가지가 있습니다.

/etc/ssh/ssh_config하지만 먼저, 서버에 "호스트 별칭"을 갖는 것이 전적으로 가능하다는 점을 언급해야 합니다 ~/.ssh/config. 이를 통해 SSH 구성 옵션 세트에 특정 호스트 별칭을 쉽게 할당할 수 있습니다.

아래는 예시입니다.

Host router
    Hostname 10.0.0.1
    Port 222
    User root

이렇게 하면 입력이 입력 ssh router과 동일해집니다.ssh [email protected] -p 222

이는 아마도 대부분의 사용 사례를 다룰 것입니다. 이미 알고 계시다면 죄송합니다. 여기서는 모든 내용을 다루고 싶었습니다.

고정 SSH 명령을 다르게 해석하기 위해 SSH가 정말로 필요한 경우 입력 매개변수를 보고 주요 매개변수(예: 프로덕션 또는 개발)를 식별하고 해당 매개변수를 해석한 다음 SSH 명령에 대한 래퍼가 필요할 가능성이 높습니다. 의 값에 따라 하나의 가능한 호스트(SSH 구성에서 사전 구성될 수 있음)를 선택합니다 $PWD.

이것이 도움이 된다면 알려주세요! ^.^


업데이트: 지적해주신 @fra-san에게 많은 감사를 드립니다.많은더욱 우아한 선택! :D (적어도 특별한 경우가 상대적으로 적다면 더 우아할 것입니다...)

간단히 다음을 수행할 수 있습니다.

Match host production, exec ssh_match_dir
    Port 5555
    Hostname foodev.biz

ssh_match_dir다음과 같이 조건이 적용되어야 함을 감지하면 PATH의 어떤 스크립트가 상태 0으로 종료됩니까?

#!/usr/bin/env bash
if test "$PWD" = "/home/a/git"; then
    exit 0
else
    exit 1
fi

man ssh_config해당 TOKENS섹션 을 확인하고 특별한 주의를 기울이십시오 . 여기에는 ssh추가 조건을 추가하기 위해 스크립트에 전달하도록 지시할 수 있는 매개변수에 대한 정보가 포함되어 있습니다. 스크립트에 일부 매개변수 구문 분석을 사용하고 추가하면 exec ssh_match_dir %h사용 사례에 따라 하나의 스크립트가 서로 다른 임의 조건으로 각 호스트를 처리하도록 할 수 있다고 생각합니다.

관련 정보