터미널을 열고 SSH를 실행하고 사용자 전환

터미널을 열고 SSH를 실행하고 사용자 전환

그놈 터미널을 연 후 다음을 수행하여 SSH를 통해 원격 호스트에 연결했습니다.

gnome-terminal -- bash -c "ssh -i ~/.ssh/virtual_machines remote@remotehost; exec bash;"

그러나 SSH를 통해 원격 호스트에 연결되면 sudo su testvisudo에 명령을 추가했습니다.

%wheel  ALL=(ALL)       NOPASSWD:/bin/su test

테스트로 전환하면 테스트 사용자가 프로그램을 시작하고 해당 프로그램을 유지합니다.

.bashrc 파일 수정은 해당 사용자로 SSH를 사용하고 프로그램이 자동으로 시작되는 것을 원하지 않기 때문에 옵션이 아닙니다.

답변1

세션으로 실행되는 로그인 셸을 gnome-terminal시작하는 창/탭을 시작한다고 가정하면 다음과 같습니다.testremotehost

gnome-terminal -- ssh -i ~/.ssh/virtual_machines -t remote@remotehost 'exec sudo -iu test'

su와 결합하면 sudo나에게는 약간 어리석은 것처럼 들립니다 . 수행할 수 있는 작업을 sudo수행할 수 su있으며, 누가 무엇을 수행할 수 있는지 정의하는 데 더 큰 유연성을 제공합니다.

%wheel  ALL=(test) NOPASSWD: ALL

그룹의 모든 사용자는 wheelas를 포함하여 암호 프롬프트 없이 사용자로서 모든 명령을 실행할 수 있습니다.testsudo -i -u testtest

답변2

후속 exec bashssh 명령은 아무 작업도 수행하지 않습니다. SSH 세션이 아닌 초기 셸에서는 세미콜론으로 명령을 구분합니다. SSH 세션 내에서 명령을 시작하려면 실행할 명령을 추가하기만 하면 됩니다.

다음으로 사용자 테스트로 전환하는 것은 어떻습니까?

  • 원격 호스트에 SSH를 연결하기 전

    sudo su test
    ssh remotehost programname
    

    .ssh/authorized_keys이렇게 하려면 사용자 테스트를 위한 공개 키가 포함된 파일을 원격 호스트에 생성 해야 할 수도 있습니다 . 그러면 비밀번호 없이 로그인이 가능해집니다.

  • 아니면 원격 호스트에 SSH로 접속할 때?

    ssh test@remotehost programname
    

    이렇게 하려면 다음을 .ssh/authorized_keys포함하는 원격 호스트에 파일을 생성 해야 할 수도 있습니다.당신의공개 키. 그러면 비밀번호 없이 로그인이 가능해집니다.

  • 아니면 이렇게 할 수도 있어요

    ssh -t remotehost "sudo su test -c programname"
    

관련 정보