我的用户在根组中。我以根用户身份将ssh分配到服务器,因为通常说的是Permission denied, please try again.
是以我的用户身份使用ssh,并且登录后我输入sudo su
并提供用户密码成为root用户。
我想自动化部分工作,所以我想编写一个bash脚本,该脚本以我的用户的身份ssh,切换到root用户,然后调用命令集。
到目前为止,我提供了以下脚本,但是如果不询问用户密码,便无法切换到root用户:
while read p; do
p=$(echo $p|tr -d '\r')
sshpass -p "myPasswd" ssh -T -o StrictHostKeyChecking=no myUser@remoteServer << EOT
cd /var/log/jboss/ #here I am getting 'permission denied' message as only root has access
exit
EOT
done < $nodes
我也尝试过:
sshpass -p "myPasswd" ssh -tt -o StrictHostKeyChecking=no myUser@remoteServer 'cd /var/log/jboss/'
但是我收到了相同的permission denied
错误消息
答案 0 :(得分:1)
出于安全原因,通常不允许root用户访问ssh。
PermitRootLogin no # value in /etc/ssh/sshd_config
以上设置阻止您首先以root用户身份登录。如果您对网络的安全性“满意”,则可以考虑修改该设置。如果您曾经对sshd配置进行了修改,则需要重新启动ssh服务:
sudo service sshd restart
当然,如果您希望遵循常识,则可能需要更改sudoers文件(如chepner和Nic3500的建议)。这是一个合理的配置更改:
将以下行添加到/ etc / sudoers文件的底部:
#includedir /etc/sudoers.d
并将以下文件添加到您的/etc/sudoers.d目录:
cat /etc/sudoers.d/10_wheel:
%wheel ALL=(ALL) NOPASSWD: ALL
以上示例将sudo配置为允许无需密码即可访问wheel组成员的所有命令。您可能需要将组名更改为用户所属的组。
您可以通过发出以下命令来确定您的组:
groups
此外,为避免使用sshpass,可以将ssh公钥部署到远程主机。最后,如果您根本不想更改服务器,则可以实现期望的功能。如果您熟悉python编码,我建议使用pexpect-我发现它比通常讨论的基于TCL的期望容易得多。