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