SSH를 통해 여러 호스트에 연결할 때 생산성 향상

SSH를 통해 여러 호스트에 연결할 때 생산성 향상

저는 운영 업무를 수행하고 있으며 수백 대의 서버에 효율적으로 로그인할 수 있어야 합니다. 효율적이라는 말은 누군가 나에게 호스트 목록을 보라고 요청할 때부터 내가 실제로 호스트에 도달할 때까지의 시간이 최소화되어야 한다는 것입니다. 이제 내 메모를 보고 호스트 이름을 찾아 내 사용자 이름 앞에 추가하고 호스트 목록을 텍스트 편집기에 넣은 다음 명령을 터미널에 붙여넣어야 하는데 이는 매우 지루합니다.

이상적으로는 호스트 목록을 필터링하고 필요한 목록을 찾는 데 도움이 되는 터미널에서 호출할 수 있는 일부 기능을 생성하고, 사용자 이름을 추가하고 SSH(또는csshx) 주문하다. 나는 다음 텍스트 파일을 갖는 것을 고려했습니다.

description           hostname          user
.........             .........         ...

cat필요한 호스트를 찾아서 전면에 연결 하고 user@명령을 생성합니다. 더 좋은 방법이 있다고 생각하고 이에 대한 모든 사람의 생각을 듣고 싶습니다.

시간 내 주셔서 감사합니다!

답변1

투박해 보일 수 있지만 원하는 모든 설명 이름에 대해 ~/.ssh/config에 항목을 추가한 다음 ssh <name>올바른 사용자/호스트 등을 자동으로 적용 할 수 있습니다. 내 구성의 예는 다음과 같습니다.

host abc
   hostname 1.2.3.4
   User root
   LocalForward 5951:192.168.1.1:5901

   ProxyCommand ssh 1.2.3.4 nc 192.168.1.1 22

그래서 그냥 입력하면 ssh abc1.2.3.4에 루트로 로그인하고 일부 포트 전달을 설정하고 SSH 터널을 다른 호스트에 연결합니다.

답변2

별칭을 사용하면 간단한 명령을 입력하여 다른 서버에 액세스할 수 있습니다. 그래서 긴 명령을 입력할 필요 없이 별칭만 입력합니다. 이제 점점 더 많은 서버를 추가하기 시작하면 server1의 별칭은 "one"이고 server97의 별칭은 "fred"라는 것을 기억하기 어렵습니다. 따라서 첫 번째 별칭 아이디어는 제가 대부분의 서버를 방문하는 서버에만 적용됩니다.

다른 경우에는 호출할 때 연결할 서버 목록이 표시되도록 함수(별명이기도 함)를 만듭니다. 내가 입력한 번호를 기반으로 별칭을 실행하여 해당 서버에 연결했습니다.

별칭을 파일에 저장하고 .bash_aliases(물론 정의 위치/방법에 따라 OS에 따라 다름) 파일에 내 기능을 저장 .bash_functions한 다음 .bashrc.bashrc

예를 들어 별칭 파일에는 다음 항목이 포함될 수 있습니다.

alias serv1='ssh [email protected]'<br>
alias serv2='ssh [email protected]'<br>
alias start='serverconnect'

그런 다음 다음과 같은 기능을 갖습니다.

function serverconnect
{
    echo "Select server you would like to connect to:"
    echo " 1 - Server1"
    echo " 2 - Server2"

    read choice

    case $choice in
    1)
      serv1
    ;;
    2)
      serv2
    ;;

    *)
      echo "Invalid choice"
    esac
}

따라서 server1에 연결하려면 "serv1"을 입력하고, 서버 목록에 연결하려면 "start"를 입력합니다. 서버 목록이 늘어남에 따라 모든 서버를 하나의 목록에 표시하거나(화면에서 스크롤될 수 있음) 더 세분화하려는 경우 어려울 수 있습니다. 실제로 모든 것은 귀하의 프로세스에 적합한 것이 무엇인지에 달려 있습니다.

업데이트: 별칭 및 함수 파일을 호출할 수 있는 방법이 필요할 수도 있습니다. 나는 .bashrc다음 구문을 사용합니다.

if [ -f "${HOME}/.bash_aliases" ]; then
  source "${HOME}/.bash_aliases"
fi

관련 정보