如何通过ssh登录Ubuntu并自动sudo su?

时间:2016-01-19 23:07:39

标签: linux ubuntu ssh

从我的Mac终端我可以通过ssh登录到我的各种Ubuntu服务器而无需输入密码。没关系。但是我在Ubuntu中所做的工作要求我具有root访问权限,因此在登录后我会立即执行sudo su,这是一个额外的步骤,需要在此时手动输入我的密码。

什么是避免这一额外步骤的好方法,所以我现在用我的用户名登录,但是立即为我执行了sudo su(或者任何具有相同结果的东西)?

感谢。

2 个答案:

答案 0 :(得分:3)

你要做的事似乎很不安全;基本上你是为任何以你登录的人提供root权限。但是,它可以做到。

在你正在进入的Ubuntu机器上:

  1. 授予自己无密码的sudo权限。您可以对所有命令执行此操作,也可以更安全一些并定义特定命令。首先,启动sudo配置编辑器:

    $ sudo visudo

  2. 然后定义您希望在没有密码的情况下运行su命令的用户。我假设您的用户名是doug(基于您的stackoverflow句柄),并且服务器主机名是ubuntubox

    doug ubuntubox = (root) NOPASSWD: /bin/su
    

    现在您应该能够在没有密码的情况下执行此命令:

    sudo su
    
    1. 要在登录时立即执行该命令,请将命令添加到〜/ .bash_profile的最顶部。如果您没有此类文件,请创建一个:

      $ touch ~/.bash_profile $ echo "sudo su -" > ~/.bash_profile

    2. 退出ubuntu服务器,因为bash_profile仅在登录时获得。

    3. 登录您的服务器。一旦你的shell打开,它应该sudo su你进入根shell。

    4. 如果〜/ .bash_profile在登录时未获得来源:

      $ echo ". $HOME/.bash_profile" >> ~/.bashrc
      

答案 1 :(得分:1)

建议:如果你这样做,至少禁用SSH的密码登录,而是使用密钥。否则,正如其他人已经观察到的那样,您的系统是一个单独的密码,远离大开。使用密钥,至少攻击者需要先填写您的身份密钥。

保护SSH:在/ etc / ssh / sshd_config中,设置行

PermitRootLogin         no
RSAAuthentication       yes
PubkeyAuthentication    yes
PasswordAuthentication  no

要自动运行sudo,您可以将命令放在.loginrc.bashrc文件中(或.profile如果你正在运行其他shell; Ubuntu还有破折号打击。见this article)。

# This is my .bashrc. There are many like it, but this is mine.

# You can also set some variables if you ever need them.
#export LC_ALL=en_US.utf-8
#export SVN_EDITOR=/usr/bin/vim
#export VISUAL=/usr/bin/vim

sudo su

然后su删除密码,您需要在每台服务器上运行visudo并添加,例如

Cmnd_Alias  INSECURE_ROOTSHELL   = /bin/su

ubuntu      ALL=(ALL)   NOPASSWD: INSECURE_ROOTSHELL