>  기사  >  운영 및 유지보수  >  ssh 명령을 사용하여 Linux Shell에서 분산 클러스터 정보를 계산하는 방법

ssh 명령을 사용하여 Linux Shell에서 분산 클러스터 정보를 계산하는 방법

WBOY
WBOY앞으로
2023-05-11 15:52:06860검색

1. 분산된 클러스터 정보를 계산하는 아이디어

암호가 필요 없는 원격 로그인 명령을 사용하면 한 시스템이 다른 클러스터의 시스템에 액세스할 수 있습니다. 따라서 달성하기 위한 몇 가지 중요한 단계가 있습니다.

  • shh 사용 방법 알아보기

  • 비밀번호 없는 로그인 달성

  • 셸 프로그램 작성

두 번째, SSH 암호화 원칙

비대칭 암호화 기술 암호화와 복호화에 서로 다른 키를 사용하는 암호화 방법입니다. 그 중 RSA와 DSA는 비대칭 암호화 방식이다. 물론 비대칭 암호화 알고리즘에는 전제가 있습니다. 즉, 서로 암호화하고 복호화할 수 있는 키 쌍이 있다는 것입니다. 일반적으로 이 키 쌍이 소유자의 공개 키와 개인 키가 됩니다. 공개키는 타인이 알 수 있는 키이고, 개인키는 소유자만이 알 수 있는 키입니다. 물론, 개인키가 외부인에게 유출될 경우 정보보안 문제가 발생할 수 있습니다.

가정: A가 암호화된 데이터를 B에게 보내고 싶어합니다. 첫 번째 방법은 A가 자신의 개인 키를 사용하여 암호화하고, B는 데이터를 얻은 후 A의 공개 키를 사용하여 복호화하는 것입니다. 두 번째 방법은 A가 B의 공개 키를 사용하여 데이터를 암호화하고, B가 자신의 개인 키를 사용하여 데이터를 얻은 후 복호화하는 것입니다.

SSH 원격 로그인은 첫 번째 방법을 사용합니다.

3. SSH 명령

일반적으로 사용되는 방법은

ssh -i [개인 키 파일 이름] -p [포트 번호] user@hostname [실행된 명령]

개인 키 파일 이름은 기본적으로 $HOME입니다. /.ssh/id_rsa 또는 $HOME/.ssh/id_dsa, 포트 번호의 기본값은 22입니다.

예:

ssh   myname@128.180.146.89  #输入目标主机的密码后进行远程操作,exit命令退出

넷째, ssh-keygen 및 ssh-copy-id를 사용하여 비밀번호 없는 로그인을 달성하세요

ssh-keygen     #直接全部回车,先都默认

그러면 $에 있을 것입니다. HOME/.ssh/ 디렉터리에 키 쌍 파일이 생성되는데, 여기서 *.pub는 공개 키 파일로 통합되고, 다른 하나는 개인 키 파일입니다.

다음으로 공개 키 파일의 내용을 대상 호스트 사용자의 $HOME/.ssh/authorized_keys에 복사합니다. 복사 방법은 직접 수동으로 조작할 수 있습니다. 다음 명령을 사용하여

ssh-copy-id -i [공개 키 파일 이름] user$hostname

을 달성할 수도 있습니다. 예:

ssh-copy-id -i  $HOME/.ssh/id_rsa.pub  myname@128.180.146.89

그런 다음 원격 로그인 명령을 실행하여 비밀번호 없는 로그인을 달성합니다. 두 번째 로그인에도 비밀번호가 필요한 경우 파일 및 파일 디렉터리 권한 문제가 원인일 수 있습니다. 연결된 개인키와 공개키가 쌍이 아니기 때문일 수도 있습니다.

5. Linux 쉘 스크립트 구현

sshtest.sh 파일:

#!/bin/bash
func___setenv(){
   RTS_ECT_DIR="$HOME"
   #.....
}
######################################
#
#   程序主体
######################################
 
#调用环境变量
func___setenv
 
#读取机器连接信息
while read line
do
ssh_cmd=
ssh_linkhost=`echo ${line}`
    while  read  cmdline
    do
    #空命令行跳过
    if [ -z "$cmdline" ]; then
        continue 
    fi
    
    #读取的命令行拼接;
    if [ ! -n "$ssh_cmd" ]; then
        ssh_cmd=`echo ${$cmdline}` ;
    else
        ssh_cmd="${ssh_cmd};"`echo ${$cmdline}` ;
    fi
    done <${RTS_ECT_DIR}/sshcmd.cfg
#执行远程命令
ssh $ssh_linkhost $ssh_cmd </dev/null
done <${RTS_ECT_DIR}/sshlink.cfg

sshlink.cfg 파일: 비밀번호 없이 로그인하려면 먼저 키를 구성해야 합니다.

myname@128.180.146.89
myName@128.180.146.90
Myname@128.180.146.91

sshcmd.cfg 파일: 귀하의 지침에 따라 입력하세요. own need

ps -ef|grep java 
df -h

6. ssh가 한 번만 반복하는 문제

위 코드의 두 번째 줄이

ssh $ssh_linkhost $ssh_cmd

로 변경되면 while 루프는 한 번만 반복됩니다. while 읽기 라인은 루프 정보를 표준 입력에 넣고 ssh 명령은 모든 입력 버퍼를 읽으므로 while은 루프에 포함되지 않습니다. 따라서 ssh 명령을 리디렉션해야 합니다

위 내용은 ssh 명령을 사용하여 Linux Shell에서 분산 클러스터 정보를 계산하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 yisu.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제