Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
DravenJohnson
V2EX  ›  Linux

Debian 默认只有 Debian 用户,无 sudo,如何通过 su 来自动配置一些东西?

  •  
  •   DravenJohnson ·
    Psiphon-Labs · May 5, 2017 · 10619 views
    This topic created in 3321 days ago, the information mentioned may be changed or developed.
    • 某 VPS 商提供的 VPS 只有 Debian 用户,root 默认是禁止的,通过证书登陆。
    • 默认没有安装 sudo,同时即使自己装好 sudo 也会提示说 Debian 不是 sudoers
    • 可以通过 su 来登陆进 root,但是需要输入密码

    现在我们希望通过自动化程序,最好 python,但也可以用 shell,来实现创建 VPS,这一步一句完成了,同时配置 VPS 以及安装内容。

    需要修改:

    • /etc/ssh/sshd_config
    • root 密码 需要安装:
    • 很多东西

    所以基本上第一步就是需要允许 root 登陆比较方便些。可是这样的非 sudoers 的 Debian 用户设置,如何操作呢?一个一个输入密码肯定不好,有没有办法自动输入密码的?

    Supplement 1  ·  May 9, 2017
    最终办法:
    用 #32 的办法 python ssh 连接机器,我们本来其实也是用的这个办法

    然后先传一个写好的名为 script.sh 的文件,里面有更新 `/etc/ssh/sshd_config` 里面允许 root 登陆,允许密码登陆以及修改 root 密码

    然后 python 中
    cmd = 'sh -c "sleep 1; echo 密码" | script -qc "su -c \'bash /home/debian/script.sh\' - root"
    ssh.exec_command(cmd)

    更新后 SSH 可以直接以修改过的统一密码进入 root,后面就可以安装 sudo 在此修改密码等所有操作就都没问题了
    36 replies    2017-05-09 01:25:20 +08:00
    DravenJohnson
        1
    DravenJohnson  
    OP
       May 5, 2017
    TL;DR 主要就是想通过先用的情况下的一个 VPS,在这上面配置一些东西,包括安装软件,修改密码,修改 ssh 等等。
    zhs227
        2
    zhs227  
       May 5, 2017
    没用过 debian,其它几种 linux 的话,都是把用户添加到一个特定的用户组就可以了。ubuntu 是添加到 sudo 组,centOS 是添加到 wheel 组。
    网上流传各种修改 /etc/sudoers 的方式,不太推荐。
    还是建议通过普通帐号用 sudo,sudo 可以自己找包装上去。
    ryd994
        3
    ryd994  
       May 5, 2017
    写好脚本
    su -c
    只要输一次密码
    总之你至少得输一次吧
    ivmm
        4
    ivmm  
       May 5, 2017
    apt-get install sudo ???
    imn1
        5
    imn1  
       May 5, 2017
    su
    vi /etc/sudoers

    自己加进去就是了

    其实人家就是为了安全,就算别人“误”登入,不知道 root 密码也不能做太多
    lekai63
        6
    lekai63  
       May 5, 2017 via iPhone
    没人提 发 ticket 么?
    与其费脑子跟程序死磕,不如试试与人交流套套近乎。说不得就能勾搭上人家 boss 给你免了服务器的费用 23333
    yushiro
        7
    yushiro  
       May 5, 2017 via iPhone
    安装 sudo 之后,把当前用户加入 sudo 组,就可以用 sudo 了,不需要手动配置 sudoers
    xiaket
        8
    xiaket  
       May 5, 2017
    不建议直接改 /etc/sudoers, 建议将合适的配置文件放进 /etc/sudoers.d/目录.
    LokiSharp
        9
    LokiSharp  
       May 5, 2017
    su root
    gpasswd -a USER_NAME wheel

    不要修改 sudoers 不安全
    choury
        10
    choury  
       May 5, 2017 via Android
    把 debian 加到 sudo 组里面就行了
    DravenJohnson
        11
    DravenJohnson  
    OP
       May 5, 2017
    @lekai63 发了 Tickets 了,不过这个云服务商什么都没有,不报希望可以解决


    @zhs227
    @ryd994
    @ivmm
    @imn1
    @yushiro
    @xiaket
    @LokiSharp
    @choury

    同一回复一下吧,现在的问题就是不管怎么样都需要输入一次密码:
    不管是安装 用任何 apt-get install sudo 安装 sudo ;或者是很多人说的一样,加到 sudo 组;还是说的 su root

    都无法避免输入一次密码。我们现在是想要通过一个 python 或者 shell 自动化这个步骤。当然如果谁能说出来把密码加在 shell scipt 里面的办法也是可以的。

    原因很简单,我们第一次需要 provisioning 500 个 VPS。以后每天需要删除 + 创建不少于 50 个 VPS,如果这个简单步骤无法自动化的话,那么基本来说就无法使用了。
    choury
        12
    choury  
       May 5, 2017 via Android
    @DravenJohnson 搜索 sudo 免密码
    ysicing
        13
    ysicing  
       May 5, 2017
    好奇哪家的 VPS
    yinflying
        14
    yinflying  
       May 5, 2017
    为了安全,我也把自己的 vps 改成这个样子,root 禁用登陆,使用普通用户登陆,并且没有 sudo 权限。

    楼上的方法都可以,不过个人还是支持直接加到 wheel 组比较好。
    lazycat
        15
    lazycat  
       May 5, 2017 via Android
    试试 expect ?
    imn1
        16
    imn1  
       May 5, 2017
    @DravenJohnson
    1.sudoers 可以改成免密的,我 lapton 装 debian 第一件事就是做这个
    2.仍然建议保留现在方式,服务器上还是不免密好
    LokiSharp
        17
    LokiSharp  
       May 5, 2017
    @DravenJohnson 既然你是 500 VPS 的大用户,你有权力发 Tickets 要求服务提供商为你修改配置脚本。
    嘛,一般来说服务商都会提供 API 文档让你开发自动部署脚本比如说腾讯云和阿里云的修改密码 API https://www.qcloud.com/document/api/213/1245
    https://help.aliyun.com/document_detail/25503.html?spm=5176.doc25485.6.835.jWnaII
    如果连 API 文档都没有的话。。。建议换一家服务商
    CRVV
        18
    CRVV  
       May 5, 2017 via Android
    man sudoers
    搜索 password
    另外,改配置要用 visudo
    ryd994
        19
    ryd994  
       May 5, 2017
    你们都想复杂了:
    echo password | su -c script.sh

    还有,这样的大客户,要求 provision 的时候带公钥真不难。大点的云服务商,比如 AWS,DO,包括 Vultr 都是可以的。
    不能注入公钥的服务商,窃以为技术水平不行,不值得用。
    fuxkcsdn
        20
    fuxkcsdn  
       May 5, 2017
    @ryd994 这命令在 bash 里输入会出现 su: must be run from a terminal 错误

    BTW,大客户要求定制化镜像应该很容易的
    DravenJohnson
        21
    DravenJohnson  
    OP
       May 5, 2017
    @ryd994 对,会有 20 楼说的那种情况。这个服务商很奇怪,注入公钥了,但是没有 sudo,所以 su 还是需要输入密码,很头疼

    @fuxkcsdn 其实不容易,主要是因为这个服务商比较奇葩。

    @CRVV 这些东西都没办法很好的通过一个 script 完成,尤其是 visudo 的时候系统需要提示输入密码的那个情况

    @LokiSharp 唉,这个 VPS 公司太小了,感觉没人愿意搞。他们的母公司是做服务器托管的,倒是挺大,欧洲和北美可能有近 15 个数据中心。但是 VPS 这个是个新项目,没有自定义镜像,没有 Snapshot,API 的创建还是个坏的,只能开机关机什么的。
    fuxkcsdn
        22
    fuxkcsdn  
       May 5, 2017
    看看 vps 是否默认有安装 expect
    或者尝试下 apt-get install expect 看需不需要密码,如果不需要的话,那一切就好办,需要的话就真无解了
    ryd994
        23
    ryd994  
       May 5, 2017
    @DravenJohnson
    @fuxkcsdn
    我在 centos 上测试没有问题
    试试 ssh -tt 还有 getty
    terminal 的话总是有办法造的
    araraloren
        24
    araraloren  
       May 5, 2017
    这种自动化交互,我第一时间想到的就是
    expect
    7654
        25
    7654  
       May 5, 2017
    这么大的量,为什么不定制 VPS 模版镜像呢
    Osk
        26
    Osk  
       May 5, 2017 via Android
    LANG=C expect -c 'spawn su -c /script; expect "Password:"; send "yourpass\n"; interact'
    Showfom
        27
    Showfom  
    PRO
       May 5, 2017
    su -i
    输入密码
    然后就变成 root 了
    再 apt-get install sudo
    Showfom
        28
    Showfom  
    PRO
       May 5, 2017
    @Showfom 说错了,直接 su 这个命令就行

    楼上的朋友们是多久没用 iso 装 Debian 8 了

    老早以前他默认就不带 sudo 了,都得自己装,服务商的话得看自己的模板优化,比如 Google Cloud 还有 Linode 这些都是会给你装好的,要是傻乎乎的什么都没有装那自然就没了

    楼主的情况应该是,你用 ssh key 登陆,但是没有给你 debian 默认用户的密码,所以你可以去控制面板找找有没有给你 debian 默认用户的密码,没有的话就去怼客服吧,要他们改模板去。
    Showfom
        29
    Showfom  
    PRO
       May 5, 2017   ❤️ 1
    或者还有一种迂回的方案,要是控制台里你可以找到 root 密码,那么用 console 进去,然后 root 登陆安装下 sudo 呗
    LokiSharp
        30
    LokiSharp  
       May 5, 2017
    @Showfom #29 问题是他有 500 台机器要配置。
    目测他的 vps 没有装 expect,在没有 expect 的情况下 如何配置能自动输密码的自动化脚本
    Showfom
        31
    Showfom  
    PRO
       May 5, 2017
    @LokiSharp 所以应该找服务商去解决而不是来 V2EX 提问
    v2exchen
        32
    v2exchen  
       May 5, 2017
    用 python ssh 登录,模拟人机交互。https://my.oschina.net/u/142602/blog/191822
    realpg
        33
    realpg  
    PRO
       May 5, 2017
    redhat 工程师配出来的 debian/ubuntu 就这样……
    sylecn
        34
    sylecn  
       May 6, 2017 via Android
    装好 sudo 之后,可以配置某个(些)用户免密码使用 sudo。不在电脑前,不记得具体的格式了。在配置时要加一个 NOPASS 之类的参数。
    DravenJohnson
        35
    DravenJohnson  
    OP
       May 9, 2017
    @Showfom 这个服务商非常高傲,基本来说不管。主要 VPS 也是他们的副业可能。
    DravenJohnson
        36
    DravenJohnson  
    OP
       May 9, 2017
    @7654
    @CRVV
    @LokiSharp
    @Osk
    @Showfom
    @araraloren
    @choury
    @fuxkcsdn
    @imn1

    感谢所有回复,已经基本解决了,最后写个脚本然后一行 python 代码解决,更新一些 python 的代码就可以完全自动化了,谢谢个人。具体办法已经 Append 欢迎借鉴
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   4095 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 1168ms · UTC 04:14 · PVG 12:14 · LAX 21:14 · JFK 00:14
    ♥ Do have faith in what you're doing.