Closed. This question does not meet Stack Overflow guidelines。它当前不接受答案。












想改善这个问题吗?更新问题,以便将其作为on-topic用于堆栈溢出。

5年前关闭。



Improve this question




我已经在本地计算机上安装了自己的rpm软件包。在安装过程中,我应该测试没有密码的ssh连接。

rpm软件包有一个文件夹,其中包含软件和脚本。

在rpm的%post 部分上,我调用我的脚本之一(script1),并通过以下命令创建新用户(例如,将其称为“user1”):
groupadd user1
adduser -g user1 -c "sshuser" user1  >/dev/null

此后,我调用另一个脚本(script2),其中包含以下内容:
su -c "$0" user1
echo "y" | ssh-keygen -t dsa -P '' -f $HOME/.ssh/id_dsa
cat $HOME/.ssh/id_dsa.pub >> $HOME/.ssh/authorized_keys
chmod 600 $HOME/.ssh/authorized_keys
ssh-keyscan -H localhost

但是安装完成后,我不能做
su user1
ssh localhost

没有密码。
另外,如果我手动执行,我也无法没有密码登录
su user1
echo "y" | ssh-keygen -t dsa -P '' -f $HOME/.ssh/id_dsa
cat $HOME/.ssh/id_dsa.pub > $HOME/.ssh/authorized_keys
chmod 600 $HOME/.ssh/authorized_keys

但是,如果我之前删除了dsa-keys:
su user1
rm -f ~/.ssh/{id_dsa*,authorized*}
ssh-keygen -t dsa -P '' -f $HOME/.ssh/id_dsa
cat $HOME/.ssh/id_dsa.pub > $HOME/.ssh/authorized_keys
chmod 600 $HOME/.ssh/authorized_keys

我可以用
ssh localhost

没有问题。

另外,如果我手动运行script1和script2,则可以成功使用ssh。

我做错了什么?

我也检查了$ HOME / .ssh中所有文件的权限
drwxr-xr-x. 2 user1 root 4096 Apr 17 11:44 .
drwx------. 5 user1 user1 4096 Apr 17 11:41 ..
-rw-------. 1 user1 user1 604 Apr 17 11:44 authorized_keys
-rw-------. 1 user1 user1 672 Apr 17 11:44 id_dsa
-rw-r--r--. 1 uesr1 user1 604 Apr 17 11:44 id_dsa.pub
-rw-------. 1 user1 user1 884 Apr 17 11:44 known_hosts
-rw-------. 1 user1 user1 884 Apr 17 11:44 known_hosts.old

更新:
cat /var/logs/messages | grep ssh
Apr 17 12:29:15 tivoli kernel: type=1400 audit(1429262955.308:57): avc:  denied  { read } for  pid=9711 comm="sshd" name="authorized_keys" dev=dm-0 ino=1187196 scontext=system_u:system_r:sshd_t:s0-s0:c0.c1023 tcontext=unconfined_u:object_r:user_home_dir_t:s0 tclass=file

但是许可仍然
-rw-------. 1 user1 user1 604 Apr 17 11:44 authorized_keys

Update2 :
还有助于仅删除authorized_keys并重新创建它:
rm -f $HOME/.ssh/authorized_keys
cat $HOME/.ssh/id_dsa.pub >> $HOME/.ssh/authorized_keys

最佳答案

通过在创建用户后添加跟随行来解决:

mkdir /home/user1/.ssh
restorecon -R -v /home/user1/.ssh

现在script1看起来像这样:
groupadd user1
adduser -g user1 -c "sshuser" user1  >/dev/null
mkdir /home/user1/.ssh
restorecon -R -v /home/user1/.ssh

关于linux - 通过不带密码的ssh连接(rpm安装),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29694868/

10-16 20:22