首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何通过su用户名在一行切换用户时传递密码

如何通过su用户名在一行切换用户时传递密码
EN

Unix & Linux用户
提问于 2021-03-01 05:02:03
回答 2查看 3.4K关注 0票数 0

我有一个ec2实例,我连接到它并执行以下操作:

代码语言:javascript
复制
[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  

如何以非交互式的方式以单行方式输入密码?

为什么我需要这样做:上面的文件夹B有我需要从git更新的代码,我想从jenkins shell脚本调用它

  • 进入实例的ssh
  • su用户B
  • 自动输入密码
  • git拉源母机
  • python wsgi.py

What我试过:

代码语言:javascript
复制
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时自动使用?暴露密码是一种不好的做法?

EN

回答 2

Unix & Linux用户

发布于 2021-03-01 07:39:31

使用sudo是一种选择吗?然后你就可以:

代码语言:javascript
复制
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
EN

Unix & Linux用户

发布于 2021-03-01 10:40:49

你可以用钥匙来避免密码。在您的userB机器上生成一个密钥对作为ec2 --将私钥复制到您登录的机器上,并存储在ec2/..ssh/id_rsa_userB_ec2中

编辑UserA/..ssh/config以添加一个新条目,如

代码语言:javascript
复制
Host ec2
        Hostname my_ec2_instance
        Port 22
        User userB
        IdentityFile ~/.ssh/id_rsa_userB_ec2

在ec2机器上,将公钥添加到authorized_keys文件中。然后,您就可以登录并使用配置文件中的上述别名使用userB将id更改为ssh ec2

票数 2
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/636939

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档