비밀번호 없이 일반 사용자로 어떻게 로그인하나요?

비밀번호 없이 일반 사용자로 어떻게 로그인하나요?

누군가 내 스크립트를 작성하는 데 도움을 줄 수 있는지 궁금합니다.

서버가 2개 있습니다. 서버 A와 서버 B라고 부르겠습니다. 서버 B에는 서버 A에서 실행하고 싶은 소프트웨어가 설치되어 있습니다. 서버 A에 소프트웨어를 설치할 수 없습니다.

사용자가 서버 A에서 다른 소프트웨어를 실행하도록 해야 합니다. 그런 다음 서버 B의 소프트웨어를 호출하여 명령을 실행하는 스크립트를 호출합니다.

그래서 서버 A와 서버 B에 transfer라는 사용자를 생성했습니다. 인증 키를 사용하여 비밀번호 없이 서버 B로 ssh를 전송할 수 있도록 허용했습니다.

이제 서버 A에서 전송으로 su를 시도하고, 서버 B로 ssh를 실행하고 명령을 실행합니다.

이것은 루트로서 완벽하게 작동합니다. 그러나 내가 나 자신이거나 다른 사용자인 경우 서버 B의 "전송" 사용자에 대한 비밀번호를 묻는 메시지가 나타납니다.

명령 순서는 다음과 같습니다.

 #!/bin/bash
 su transfer -c 'ssh transfer@ServerB script $1 $2' 

답변1

원격 명령을 실행하는 쉘 스크립트를 작성하십시오.

% cat > /home/transfer/exec-remote-sw <<EOF
#!/bin/bash
ssh transfer@ServerB script $1 $2
EOF
% chmod 755 /home/transfer/exec-remote-sw

이 스크립트를 사용자로 실행하여 테스트합니다 transfer.

% /home/transfer/exec-remote-sw  arg1  arg2

이제 루트로 Linux 그룹(예: transfer)을 만든 다음 이 기능에 액세스해야 하는 모든 사용자를 Unix 그룹에 추가합니다.

% groupadd transfer
% usermod -a -G transfer login1
% usermod -a -G transfer login2
...
% usermod -a -G transfer loginN

루트로서 다음을 /etc/sudoers실행하여 파일 에 다음을 추가합니다 visudo.

%transfer   serverA = (transfer) NOPASSWD: /home/transfer/exec-remote-sw

전송 그룹의 사용자 중 하나로 로그인하고 다음을 실행하여 테스트합니다.

% sudo -u transfer /home/transfer/exec-remote-sw  arg1  arg2

사용자를 위해 이를 단순화하려면 .profile 파일에 다음을 추가하도록 하십시오(또는 모든 사람을 위해 /etc/profile에 추가하십시오).

alias svrbexec="sudo -u transfer /home/transfer/exec-remote-sw"

그런 다음 사용자는 다음을 입력할 수 있습니다.

% svrbexec  arg1  arg2

원격 프로세스는 두 개의 매개변수가 전달된 상태로 실행되어야 합니다.

관련 정보