한 줄에 su 사용자 이름으로 사용자를 전환할 때 비밀번호를 전달하는 방법

한 줄에 su 사용자 이름으로 사용자를 전환할 때 비밀번호를 전달하는 방법

EC2 인스턴스가 있고 여기에 연결하여 다음을 수행합니다.

[userA@ip-abcd ~]$ ssh my_ec2_instance 
[userA@ip-abcd ~]$ whoami  
userA   
[userA@ip-abcd ~]$pwd   
/home/userA  
[userA@ip-abcd ~]$ cd ~  
[userA@ip-abcd ~]$ pwd  
/home/userA  
[userA@ip-abcd ~]$ ls   
(shows nothing)  
[userA@ip-abcd ~]$ su userB  
Password:  
(I enter the password and the prompt changes to)    

bash-4.2$ pwd  
/home/UserA  

bash-4.2$ cd ~   
bash-4.2$ ls   
A B C D  

비대화식으로 su - userB를 사용하고 한 줄에 비밀번호를 입력하는 방법은 무엇입니까?

위 작업을 수행해야 하는 이유: 위의 폴더 B에는 git에서 업데이트해야 하는 코드가 있으며 jenkins 쉘 스크립트에서 호출하려고 합니다.

  • SSH를 통해 인스턴스에 접속
  • suuserB
  • 비밀번호 자동 입력
  • git pull 오리진 마스터
  • 파이썬 wsgi.py

내가 시도한 것:

1) echo actual_password | su userB  
2) su userB -p actual_password 

3) echo userBPassword | su -c whoami userB  
  1. ^는 터미널에서 가장 가깝습니다. userBPassword가 입력된 것을 볼 수 있지만 아무 일도 일어나지 않습니다. 즉, userB가 활성화되지 않습니다.

~/.bash_profile비밀번호를 추가 하고 실행 시 프롬프트가 표시되면 자동으로 사용하는 방법이 있습니까 su - userB? 비밀번호를 노출하는 것은 나쁜 습관이기 때문에?

답변1

sudo옵션을 사용하시나요 ? 그러면 다음과 같이 할 수 있습니다:

echo userBPassword | sudo -S -u userB whoami  

유제:https://stackoverflow.com/questions/233217/how-to-pass-the-password-to-su-sudo-ssh-without-overriding-the-tty

답변2

비밀번호를 피하기 위해 키를 사용할 수 있습니다. EC2 머신에서 userB로 키 쌍을 생성합니다. 로그인한 머신에 개인 키를 복사하고 userA/.ssh/id_rsa_userB_ec2에 저장합니다.

UserA/.ssh/config를 편집하여 새 항목을 추가합니다. 예를 들어

Host ec2
        Hostname my_ec2_instance
        Port 22
        User userB
        IdentityFile ~/.ssh/id_rsa_userB_ec2

EC2 머신에서 Authorized_keys 파일에 퍼블릭 키를 추가합니다. 그러면 ssh ec2구성 파일에서 위의 별칭을 사용하여 로그인하고 ID를 userB로 변경할 수 있습니다.

관련 정보