我想加快在我正在创建的某些 Linux VM 上创建用户帐户的速度,并想知道是否可以简化写入新用户~/.ssh/authorized_keys或~/.ssh/authorized_keys2文件的过程。
我的手动过程大约是(以新用户身份登录):
ssh-keygen -t rsa -N "" -f ~/.ssh/id_rsa
touch ~/.ssh/authorized_keys
chmod go-rwx ~/.ssh/authorized_keys
echo '... me@machine' >> ~/.ssh/authorized_keys
Run Code Online (Sandbox Code Playgroud)
有没有什么办法,用bash命令,一个标准的GNU命令,或任何程序在Ubuntu上轻松安装,以凝聚touch,chmod以及echo到一个命令?
我想将它减少到一个命令的部分原因是,我可以制作一个 shell 脚本,我可以在 VM 上作为具有 sudo 功能的初始用户运行。
就像是:
sudo su - me -c 'ssh-keygen -t rsa -N "" -f ~/.ssh/id_rsa'
echo '... me@machine' | sudo su - me -c 'xyz 0600 ~/.ssh/authorized_keys'
Run Code Online (Sandbox Code Playgroud)
xyz一举创建、设置权限和写入文件的假设命令在哪里。
注意
touch ~/.ssh/authorized_keys
chmod go-rwx ~/.ssh/authorized_keys
echo '... me@machine' >> ~/.ssh/authorized_keys
Run Code Online (Sandbox Code Playgroud)
不提供以下好处:
echo '... me@machine' >> ~/.ssh/authorized_keys
chmod go-rwx ~/.ssh/authorized_keys
Run Code Online (Sandbox Code Playgroud)
在打开文件时检查权限,而不是在读取或写入文件时检查权限。
因此,chmod在添加内容之前或之后进行操作都没有关系。有人仍然可以在您执行此操作之前打开该文件,chmod但在阅读之前等待您添加内容。
在这里,您要确保文件从一开始就具有正确的权限:
sudo -u user sh -c '
umask 077 && printf "%s\n" "$1" >> ~/.ssh/authorized_keys
' sh "$key user@host"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3754 次 |
| 最近记录: |