
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を使用し、1行にパスワードを入力する方法は?
上記のタスクを実行する理由:上記のフォルダBにはgitで更新する必要があるコードがあり、jenkinsシェルスクリプトから呼び出そうとします。
- SSH経由でインスタンスに接続する
- suuserB
- パスワード自動入力
- git pull オリジンマスター
- Python 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に変更できます。