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

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

  •  
  •   DravenJohnson ·
    Psiphon-Labs · May 5, 2017 · 11003 views
    This topic created in 3473 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
    DravenJohnson
    OP
    May 5, 2017
    1
    TL;DR 主要就是想通过先用的情况下的一个 VPS,在这上面配置一些东西,包括安装软件,修改密码,修改 ssh 等等。
    zhs227
    zhs227
    May 5, 2017
    2
    没用过 debian,其它几种 linux 的话,都是把用户添加到一个特定的用户组就可以了。ubuntu 是添加到 sudo 组,centOS 是添加到 wheel 组。
    网上流传各种修改 /etc/sudoers 的方式,不太推荐。
    还是建议通过普通帐号用 sudo,sudo 可以自己找包装上去。
    ryd994
    ryd994
    May 5, 2017
    3
    写好脚本
    su -c
    只要输一次密码
    总之你至少得输一次吧
    ivmm
    ivmm
    May 5, 2017
    4
    apt-get install sudo ???
    imn1
    imn1
    May 5, 2017
    5
    su
    vi /etc/sudoers

    自己加进去就是了

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

    不要修改 sudoers 不安全
    choury
    choury
    May 5, 2017 via Android
    10
    把 debian 加到 sudo 组里面就行了
    DravenJohnson
    DravenJohnson
    OP
    May 5, 2017
    11
    @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
    choury
    May 5, 2017 via Android
    12
    @DravenJohnson 搜索 sudo 免密码
    ysicing
    ysicing
    May 5, 2017
    13
    好奇哪家的 VPS
    yinflying
    yinflying
    May 5, 2017
    14
    为了安全,我也把自己的 vps 改成这个样子,root 禁用登陆,使用普通用户登陆,并且没有 sudo 权限。

    楼上的方法都可以,不过个人还是支持直接加到 wheel 组比较好。
    lazycat
    lazycat
    May 5, 2017 via Android
    15
    试试 expect ?
    imn1
    imn1
    May 5, 2017
    16
    @DravenJohnson
    1.sudoers 可以改成免密的,我 lapton 装 debian 第一件事就是做这个
    2.仍然建议保留现在方式,服务器上还是不免密好
    LokiSharp
    LokiSharp
    May 5, 2017
    17
    @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
    CRVV
    May 5, 2017 via Android
    18
    man sudoers
    搜索 password
    另外,改配置要用 visudo
    ryd994
    ryd994
    May 5, 2017
    19
    你们都想复杂了:
    echo password | su -c script.sh

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

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

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

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

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

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

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

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

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