클라이언트 컴퓨터의 스크립트를 통해 SSH 서버를 종료하시겠습니까?

클라이언트 컴퓨터의 스크립트를 통해 SSH 서버를 종료하시겠습니까?

Ubuntu 서버가 있는데 노트북에서 서버를 종료하고 싶습니다. 일반적으로 서버에 ssh를 사용하여 "sudo shutdown now"를 입력해야 하지만 시간이 좀 걸립니다.

이를 수행하는 스크립트를 작성하는 방법이 있습니까? SSH 비밀번호를 어떻게 구현하나요?

답변1

공개 키를 서버에 추가하고 다음 shutdown명령을 보냅니다.

ssh [email protected] 'shutdown'

답변2

이건 그냥당신은 무엇을 할 수 있나요. 각자의 상황에 맞게 수정하세요. 다양한 수준의 안전/보안으로 이를 수행하는 다양한 방법이 있습니다(예: 명령줄에서 비밀번호와 함께 sshpass 사용 예진짜안전하지 않으며 서버의 루트에 사용자 SSH 키를 추가하는 것은정말위험한).

이는 귀하의 사용자 이름이 이라고 가정합니다 myuser.

우수한섬기는 사람처럼 root.

echo 'myuser ALL=(ALL) NOPASSWD: /usr/sbin/shutdown now' >> /etc/sudoers.d/99-myuser-shutdown

우수한고객/데스크탑/워크스테이션은 다음과 같습니다 myuser.

ssh-keygen -t Ed25519 -N '' -f ~/.ssh/id_ed25519_shutdown

(echo -n 'command="/usr/bin/sudo /usr/sbin/shutdown now" ' &&
 cat ~/.ssh/id_ed25519_shutdown.pub) |
ssh myuser@server 'mkdir -pm 700 .ssh && cat >> .ssh/authorized_keys'

지금고객서버를 종료하려면 다음을 수행하십시오.

ssh -i ~/.ssh/id_ed25519_shutdown myuser@server

클라이언트 사용자 계정이 해킹되더라도 그들이 할 수 있는 일은 서버를 종료하는 것뿐입니다. Authorized_keys에 다른 키나 무언가를 추가하지 않는 한 서버에 대한 쉘 액세스 권한이 없으며 확실히 루트 액세스 권한(!)도 없습니다.

답변3

내 제안은 sshpass 명령을 사용하는 것입니다. 단, 초기 인증이 필요합니다.

sshpass -p 'Password' ssh 192.168.xxx.xxx sudo shutdown -h now

관련 정보