从我的Mac终端我可以通过ssh登录到我的各种Ubuntu服务器而无需输入密码。没关系。但是我在Ubuntu中所做的工作要求我具有root访问权限,因此在登录后我会立即执行sudo su
,这是一个额外的步骤,需要在此时手动输入我的密码。
什么是避免这一额外步骤的好方法,所以我现在用我的用户名登录,但是立即为我执行了sudo su
(或者任何具有相同结果的东西)?
感谢。
答案 0 :(得分:3)
你要做的事似乎很不安全;基本上你是为任何以你登录的人提供root权限。但是,它可以做到。
在你正在进入的Ubuntu机器上:
授予自己无密码的sudo权限。您可以对所有命令执行此操作,也可以更安全一些并定义特定命令。首先,启动sudo配置编辑器:
$ sudo visudo
然后定义您希望在没有密码的情况下运行su
命令的用户。我假设您的用户名是doug
(基于您的stackoverflow句柄),并且服务器主机名是ubuntubox
:
doug ubuntubox = (root) NOPASSWD: /bin/su
现在您应该能够在没有密码的情况下执行此命令:
sudo su
要在登录时立即执行该命令,请将命令添加到〜/ .bash_profile的最顶部。如果您没有此类文件,请创建一个:
$ touch ~/.bash_profile
$ echo "sudo su -" > ~/.bash_profile
退出ubuntu服务器,因为bash_profile仅在登录时获得。
登录您的服务器。一旦你的shell打开,它应该sudo su你进入根shell。
如果〜/ .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