AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 561301
Accepted
George Reith
George Reith
Asked: 2013-12-14 16:49:23 +0800 CST2013-12-14 16:49:23 +0800 CST 2013-12-14 16:49:23 +0800 CST

bash 脚本创建用户然后创建 ssh 密钥

  • 772

请注意,我是一个完全的 linux 新手,在回答这个问题时请记住这一点,因为我对 linux 的了解非常有限。

操作系统: Debian 挤压

我正在使用 ZSH 并创建了一个名为webuseradd它的函数,如下所示:

function webuseradd () {
    echo creating user $1;
    mkdir /usr/share/nginx/$1;

    # sshlogin is required to allow user to ssh and sftp
    sudo useradd -G lshell,sshlogin -b /usr/share/nginx/$1/home -d /usr/share/nginx/$1/home -m --skel /etc/httpskel -K UMASK=027 $1;

    # /usr/share/nginx/$1 will be the chroot so set it to root
    sudo chown root:root /usr/share/nginx/$1;
    sudo su - $1;
    mkdir /usr/share/nginx/$1/home/.ssh;
    ssh-keygen -t rsa;
    exit;

    # force the user into a limited, jailed shell
    sudo chsh -s /usr/bin/lshell $1;
}

但是,如果我称之为它,我得到的输出:

$ webuseradd test
creating user test
No directory, logging in with HOME=/

用户创建得很好,但是当我尝试su进入用户时出现问题。如果我exit脚本然后继续以下输出:

Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):

如何确保创建密钥并将其放置在具有正确权限的正确位置?我确信我所做的其他一些事情是不可取的,所以如果你发现任何事情,请说。

debian
  • 2 2 个回答
  • 4009 Views

2 个回答

  • Voted
  1. Best Answer
    Michael Hampton
    2013-12-14T16:52:22+08:002013-12-14T16:52:22+08:00

    如果您以 root 身份运行此函数,则无需调用su然后运行多个命令。此外,这无论如何也行不通。您将获得一个交互式外壳,然后当您退出该外壳时脚本将继续。

    只需sudo直接运行您需要的命令:(而且您不需要mkdir;ssh-keygen会为您执行此操作)

    sudo -u $1 -- ssh-keygen -t rsa
    
    • 1
  2. Zoredache
    2013-12-14T16:59:06+08:002013-12-14T16:59:06+08:00

    我假设您在以 root 身份登录时没有运行此功能,因为您使用了所有 sudo。

    我可能会像这样修改你的脚本。

        sudo useradd -G lshell,sshlogin -b /usr/share/nginx/$1/home -d /usr/share/nginx/$1/home -m --skel /etc/httpskel -K UMASK=027 $1;
        sudo chown root:root /usr/share/nginx/$1;
    -    sudo su - $1;
    -    mkdir /usr/share/nginx/$1/home/.ssh;
    -    ssh-keygen -t rsa;
    +    sudo mkdir -p /usr/share/nginx/$1/home/.ssh;
    +    sudo ssh-keygen -t rsa -f /usr/share/nginx/$1/home/.ssh/id_rsa
    +    sudo chown -R /usr/share/nginx/$1/home/.ssh/
    +    sudo chmod 0600 /usr/share/nginx/$1/home/.ssh/
    

    在安全说明上。您真的不应该创建或存储用户私钥。私钥应该是私有的,而不是存储在可能被盗的服务器上。如果需要强大的安全性,您正在以错误的方式工作。

    • 1

相关问题

  • 关闭 FTP

  • 如何在同一台电脑上从 putty 连接 debian vmware

  • debian- 文件到包的映射

  • Debian Ubuntu 网络管理器错误 [关闭]

  • 为本地网络中的名称解析添加自定义 dns 条目

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve