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
- ^는 터미널에서 가장 가깝습니다. userBPassword가 입력된 것을 볼 수 있지만 아무 일도 일어나지 않습니다. 즉, userB가 활성화되지 않습니다.
~/.bash_profile
비밀번호를 추가 하고 실행 시 프롬프트가 표시되면 자동으로 사용하는 방법이 있습니까 su - userB
? 비밀번호를 노출하는 것은 나쁜 습관이기 때문에?
답변1
sudo
옵션을 사용하시나요 ? 그러면 다음과 같이 할 수 있습니다:
echo userBPassword | sudo -S -u userB whoami
답변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로 변경할 수 있습니다.