SSH를 통해 sudo가 필요한 별칭을 어떻게 전송합니까?

SSH를 통해 sudo가 필요한 별칭을 어떻게 전송합니까?

노트북에서 SSH를 통해 집 컴퓨터에 안전하게 연결할 수 있도록 설정했습니다. 오늘은 테스트를 위해 업데이트를 실행해 보았지만 노트북에서는 실행할 수 없었습니다.

내가 기본적으로 하려는 것은 연결을 활성 상태로 유지하지 않고 SSH를 통해 컴퓨터에 명령을 전달하는 것입니다. 무언가를 찾을 수 있는지 알아보기 위해 온라인에서 검색해 보았지만 아무 것도 작동하지 않는 것 같았습니다.

내가 시도한 명령은 다음과 같습니다.

$ ssh myip 'sysupg &'
bash: sysupg: command not found
echo "mypassword" | ssh myip 'sudo -S dnf upgrade -y &'
[sudo] password for myuser:
sudo: no password was provided
sudo: a password is required
echo "mypassword" | ssh myip 'sudo -S -k dnf upgrade -y &'
[sudo] password for myuser:
sudo: no password was provided
sudo: a password is required

내 비밀번호( )를 묻는 경우 [sudo] password for myuser:아무 것도 입력할 수 없으며 계속 진행되어 마지막 두 가지 sudo오류가 발생합니다.

전체적으로 :sudossh다른 머신에 전달해야 하는 명령을 전달하고 , 명령을 전달한 후 즉시 연결을 "자동으로" 닫고, 가능하면 x분 이내에 명령을 실행합니다.

답변1

가능한 방법:

ssh -t myip 'sudo -b dnf upgrade -y >/tmp/aa 2>&1'
  • 1>연결 해제 및 2>리디렉션 시 작업을 실행하려고 합니다.
  • 작업을 백그라운드에서 실행하려면 sudo -b이 옵션을 사용하세요.
  • 대화형 기능 ssh을 제공하고 싶습니다 sudo.ssh -t

가능하지만 권장되지 않는 다른 방법:

echo PASSWORD | ssh myip 'sudo -S -b dnf upgrade -y >/tmp/aa 2>&1'
  • sudo표준 입력에서 비밀번호를 읽으 려면 sudo -S대신 옵션을 사용하십시오.ssh -t
  • 명령 기록에 일반 텍스트 비밀번호가 있는 것은 잘못되었습니다.

이 옵션은 백그라운드에서 실행할 비밀번호를 묻는 메시지를 표시하고 원하는 유일한 작업이 아니기 sudo -b때문에 해당 옵션을 놓쳤습니다 .&

또한 손실 1>또는 2>리디렉션으로 인해 SSH 연결이 유지됩니다.

그러나 다음 을 사용하면 PubkeyAuthentication안전한 접근 방식이 됩니다 .

ssh root@myip 'dnf upgrade -y >/tmp/aa 2>&1 &'
  • 설정 PermitRootLogin prohibit-password하다sshd_conf
  • 공개 키를 다음 위치에 복사하세요./root/.ssh/authorized_keys
  • 개인키 비밀번호를 항상 보호하고 사용하세요.ssh-agent

screen그러나 가장 좋은 방법은 서버 측에서 사용하는 것입니다.

ssh -t myip screen -RD
sudo -s
...whatever...
Ctrl-A d (detach and disconnect)

나중에 세션을 다시 연결합니다.

ssh -t myip screen -RD
  • 당신은 당신의 요구 사항을 충족
  • 세션을 다시 연결합니다.
  • 화면을 배우세요

관련 정보