서버에 로그인하고 루트 비밀번호를 전달하도록 ssh 스크립트

서버에 로그인하고 루트 비밀번호를 전달하도록 ssh 스크립트

SSH 로그인 프로세스를 자동화하기 위해 Expect 스크립트를 작성했습니다. 내 사용자 계정에 rsa 키가 설정되어 있는데 로그인한 후 루트로 전환하고 싶지만 원격 서버가 비밀번호를 입력하지 않습니다. 원격 서버에 비밀번호를 제공하는 스크립트가 표시되어 있지만 숨길 수 있는지 궁금합니다. 하지만 이것이 왜 멈추는지 말해 줄 수 있는 사람이 있나요?

#!/usr/bin/expect

spawn ssh <server> su - 
expect "Password"
send "MyPassword\r"
interact

바로 이 화면에 있습니다:

Password: "password"

커서는 바로 아래에 있으며 계속 깜박입니다. /var/log/secure에서 스크립트로 작성된 로그인 시도에 대한 행을 수동으로 루트를 얻기 위한 일반 로그인 시도와 비교했습니다.

다음과 같이 스크립트를 작성하세요.

Jun  7 15:17:50 <server> su: pam_unix(su-l:session): session opened for user root by (uid=1000)

수동으로:

Jun  7 15:18:48 <server> su: pam_unix(su-l:session): session opened for user root by <user>(uid=1000)

유일하게 다른 점은 수동 로그인에 내 사용자 이름이 나열되어 있다는 것입니다.

명령을 다음으로 변경해 보았습니다.

spawn ssh <server> su - root
spawn ssh <server> sudo su

그러나 둘 다 작동하지 않습니다. 이 작업을 어떻게 수행할 수 있나요?

답변1

스크립트에서 tty 할당을 강제하려면 -t 플래그를 전달해야 합니다.

spawn ssh -t <server> su -

이제 예상대로 작동합니다.

관련 정보