今天我学到了很多东西,使用RSA来处理ssh并创建没有密码,没有登录名等的系统用户帐户。我试图做的是创建一个用户,该用户的主目录需要〜/ .ssh /和一个密码。 (初始ssh设置需要)
但是我似乎无法正确设置它。
我知道使用
ssh-keygen
ssh-copy-id user@remotehost
这对于RSA很简单
而且我知道如何创建一个用户说
useradd -r newuser
或者
adduser newuser --system --shell=/bin/false
passwd newuser
passwd -d newuser
最终目标
是没有外壳程序的用户,或者至少不能从远程计算机登录的用户,但是仍然可以用于ssh切换到另一台计算机并运行命令。这有可能吗?
原因/目标
的目的是让用户在ups电量不足时通过ssh关闭其他连接的计算机,然后再关闭主计算机。(一次只能有一台计算机可以通过USB连接到UPS来监视统计信息)。
我不希望人们能够使用用户名UPS通过SSH登录,但是我需要ups才能无需密码即可登录到remotehost。
将crypt字段设置*
为!!
in或in/etc/shadow
例如
# adduser tst
# passwd -l tst
Locking password for user tst.
passwd: Success
# grep tst /etc/passwd
tst:x:1000:1000::/home/tst:/bin/bash
# grep tst /etc/shadow
tst:!!:17030:0:99999:7:::
此时,由于没有有效的密码,用户无法登录。
现在command="/thing/to/do"
在authorized_keys
文件的公钥开头添加一个
例如
# ls -l $PWD/authorized_keys
-rw-r--r-- 1 tst tst 431 Aug 17 17:54 /home/tst/.ssh/authorized_keys
# cat $PWD/authorized_keys
command="/bin/echo hello" ssh-rsa AAAAB3NzaC1yc2E....etcetc
现在可以使用此密钥,但是唯一可以使用的是强制命令:
$ ssh -i ~/.ssh/id_rsa tst@test1
hello
Connection to test1 closed.
如果尝试执行其他任何操作,它将失败,并仍然强制执行相同的命令
$ ssh -i ~/.ssh/id_rsa tst@test1 reboot
hello
$
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句