bash - 如何使用该机器上的现有用户在远程主机上运行命令
问题描述
我正在编写一个 shell 脚本,它需要根据它满足的条件在多个远程主机上运行命令。如何使用其密钥对在远程主机上运行命令并将这些命令的输出分配给主主机上的变量。
我尝试使用
sshpass -f keypair hostname 'command' | 'commands'
但是这个命令是在主机本身上执行的。
解决方案
1) 将主机公钥 (~/.ssh/id_rsa.pub) 添加到远程用户认证密钥 (~/.ssh/authorized_keys)
您将公钥的内容附加到 authorized_keys
2)如果您没有此密钥,您可以生成它
ssh-keygen -t rsa
3)之后你可以
ssh <REMOTE USER NAME>@RemoteHOST <command>
例如
ssh mebada@123.44.2.12 ls
4)如果你有命令列表,你可以 scp shell 文件并从那里执行它(也没有密码),它将覆盖远程
scp /path/to/shell.file user@host:/path/to/remote
ssh user@host chmod u+x /path/to/remote/shell.file
ssh user@host /path/to/remote/shell.file
推荐阅读
- c++ - 使用“friend”关键字重载 C++ 运算符
- angular - 如何在 Angular 9 中使用 observable 限制 API 请求
- css - 在没有溢出隐藏的情况下禁用IOS上的水平滚动和弹跳
- r - 循环遍历标识符列表以加载相应的 excel 文件?
- java - Android FirebaseRecyclerView 实现搜索用户功能的问题
- asp.net-mvc - Asp.Net MVC - 使用 RedirectToAction() 转到不同文件夹中的另一个控制器 - 2 深
- python - Django 在模板中加载一个 imageField
- python - 用于将日期和时间捕获到 SQLAlchemy 的 Python 表单
- spring - Spring MVC:两次身份验证请求 - 登录表单和浏览器窗口。为什么?
- gradle - 如何为具有多个目标的 Kotlin 多平台项目配置 Gradle?