2016-06-29 2 views
2

내 일반 사용자와 함께 리눅스 박스에 로그인하고 bash 스크립트를 사용하여 root가 되려고합니다. 내 사용자가 sudoers 파일에있어 루트가 될 수 있습니다.리눅스 - 머신에 로그인하여 루트가되는 Bash.

$ssh [email protected] 
[email protected]'s password: 
[[email protected] ~]$ 
[[email protected] ~]$ sudo su - 
[sudo] password for regularuser: 
[[email protected] ~]$ 

내가 이렇게 모든 것을 검색하지만 난하지 않습니다 찾을 수있는 모든 내가 필요 정확히 :

일반적인 프로세스는 다음과 같은 것입니다. #!/usr/bin/expect를 사용해 보았지만 작동하지 않습니다. 을 다음과 같이

=========================================================================== 

내 작업 배쉬 (access.sh)입니다하지만 "스와 sudo는 -"를 발행 한 후 암호 나에게 묻는다 명령 :

#!/bin/bash 
machine=$1 
ssh -t [email protected]$machine "sudo su -" 

$ sh access.sh machine 
[email protected]'s password: 
[sudo] password for regularuser: 
[[email protected] ~]# exit 
logout 
Connection to machine closed. 

=========================================================================== 

을 시도 # 1 - 언제 는 I가있어 다음과 같은 시도 "는/usr/빈/기대 : 없음 같은 파일 또는 디렉터리"

#!/bin/bash 
machine=$1 
echo "Password?" 
read -s password 

expect -c ' 
    spawn ssh [email protected]'"$machine"' 
    expect "Password: " 
    send '"$password\r"' 
' 

시도 # 2 - 동일한 결과를

#!/bin/bash 
machine=$1 
echo "Password?" 
read -s password 

/usr/bin/expect << EOF 
spawn ssh [email protected]$machine 
expect "Password: " 
send "${password}\r" 
EOF 

시도 # 3 - 작동하지 않습니다. "일치를 찾고있는 동안` '은'예기치 않은 EOF"그것은 내 일반 사용자의 암호가 다른 하나 때문에

#!/bin/bash 
machine=$1 
echo "Password?" 
read -s password 

ssh -t [email protected]$machine "echo $password | sudo -S su -" 


$ sh access.sh machine 
Password? 
[email protected]'s password: 
bash: -c: line 0: unexpected EOF while looking for matching `'' 
bash: -c: line 1: syntax error: unexpected end of file 
Connection to vm-all-all-ad-test-packages closed. 

내가 할 수 없다 "sshpass -p"$ 암호 "ssh를 뿌리 @의 $ 기계를"나를 준다 루트의

나는 거의 모든 것을 시도했지만 성공하지 못했습니다.

아이디어가 있으십니까? !!

+2

왜 ssh 키가 아닌 암호를 사용하고 있습니까? 기본적으로 sshd는 루트 로그인을 허용하기 때문에, 당신은 그 머신에 ssh 키를 설정하고 그것을'ssh.config'에 추가하거나'-i' 스위치를 사용할 수 있습니다. 나처럼 SSH를 통한 루트 로그인을 막지 않는 한. – paddy

+0

이것이 필요하지 않으며 루트 로그인이 허용되지 않습니다. ssh 키는 사용되어서는 안됩니다. – JustQn4

답변

1

sshpass을 가져 오는 것이 재미 있습니다. sshpass은 암호가 대화식으로 제공되도록 ssh의 요구 사항을 우회하도록 설계되었습니다. 당신이 직면하고있는 문제와 이유가 expect에서 작동하지 않는다면 정확히 동일한 이유로 정확히 sudo이 동일한 트릭을 수행합니다.

잠재적 인 솔루션은, 얼마의 내림차순으로 내가 그들을 추천 :

  1. 루트에 직접 당신에게 키 기반 인증을 허용하는 관리자를 가져옵니다.
  2. 사용자가 sudo으로 인증하지 않고 특정 명령을 실행할 수 있도록 sudoers 파일을 변경하십시오.
  3. sshpasssudo 프롬프트에서 일반적인 트릭을 수행하도록 유도하십시오. 나는 그것을 시도하지 않았지만, sshpass -p password sudo something처럼 간단 할 수있다. 그렇지 않다면, 나는 sshpass의 최신 버전이 예상 암호 프롬프트를 변경하는 방법을 가지고 있다는 것을 기억하고있는 것 같습니다 (expect과 비슷합니다). sshpass svn의 최신 커밋은 그럴 것 같지만 실제로이 기능이 포함 된 버전을 출시하지는 못했습니다.

경고 : 위험 할 정도로 # 3을하십시오.# 3의 의미는 일부 파일 시스템에서 사용자의 비밀번호를 복구 가능한 형태로 저장한다는 것입니다. 이 옵션을 피하기 위해 할 수있는 모든 것을하십시오.

업데이트 : sshpass 버전 1.06이 sourceforge 다운로드 사이트에 있습니다. sudo으로 작동하는 것으로 확인되었으며 암호 프롬프트 지정자가 도움이됩니다. 아직이 솔루션을 권장하지 않습니다.

+0

의견을 보내 주신 Shachar에게 감사드립니다. 나는 할 수 없다는 것을 두려워합니다. – JustQn4

관련 문제