Oxw*_*ivi 7 remote-access user-management
如何让系统只有一个普通帐户,并由一台计算机管理管理任务?
我只是希望能够从一个系统中添加/删除所有计算机上的软件。批发 - 不是单独登录每台计算机并做需要做的事情。我可以通过物理方式或通过 SSH 来做到这一点,但是对于一百台左右的计算机,这并不是我真正想考虑的选择。
每个系统至少需要一个管理用户,因为在 Ubuntu 中禁用了一个不同的 root 帐户*。尽管如此,通过在 中添加以下行,可以从 gdm 登录中隐藏此用户“管理员” /etc/gdm/custom.conf
:
[greeter]
Exclude=nobody,administrator
Run Code Online (Sandbox Code Playgroud)
我们可能会进一步限制非管理用户的读取访问权限 /home/administrator/
。
对于管理任务,我们以用户管理员身份在本地登录(例如在命令行上或通过在 GUI 中选择其他人),或通过 ssh 远程登录。
为了向多台远程机器发出命令,我们需要定义一个本地配置文件,在~/.ssh/ssh_config
其中列出登录到远程机器所需的详细信息以及可以为客户端定义方便的名称:
# ssh configuration
Host remote1
HostName 192.168.0.1
Port 22
User USERNAME
Host remote2
HostName 192.168.0.2
Port 22
User USERNAME
Run Code Online (Sandbox Code Playgroud)
可能需要其他选项来进一步控制会话详细信息(例如禁用密码身份验证)。
我们现在编写一个脚本,连接到一个接一个的客户端以运行给定的命令:
#!/bin/bash
# run a command on multiple remotes
REMOTES=$1;shift
COMMAND=$1;shift
for remote in $REMOTES
do
echo $remote
ssh -oConnectTimeout=10 $remote $COMMAND
done
Run Code Online (Sandbox Code Playgroud)
如果这个脚本被命名,remote_command.sh
我们就可以通过调用在我们的远程机器 1-X 上运行任何命令:
remote_command "remote1 remote2 ... remote<X>" "<COMMAND>" > remote_command.log
Run Code Online (Sandbox Code Playgroud)
根据个人需要,我们可以从文件中读取 $REMOTES 的列表,或者我们可以使用常规模式作为遥控器名称以方便脚本使用。如果远程客户端没有改变,我们也可以在这个脚本中编码所有名称,以便仅使用命令调用它。
*不鼓励重新启用 root 帐户(通过passwd root <password>
在 root shell 中为 root 定义有效密码),因为缺点过于严重。
归档时间: |
|
查看次数: |
680 次 |
最近记录: |