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
    • 最新
    • 标签
主页 / ubuntu / 问题 / 605060
Accepted
0xF2
0xF2
Asked: 2015-04-04 13:58:53 +0800 CST2015-04-04 13:58:53 +0800 CST 2015-04-04 13:58:53 +0800 CST

在给定 root 访问权限的情况下,在远程主机上设置具有 SSH 访问权限的新用户的最简单方法

  • 772

我正在写一篇关于以困难的方式设置 Ceph 的教程,一路 shell。

我对以 root 身份连接到远程主机、创建新用户、然后 scp 密钥所需的 ssh 命令数量不满意……必须有一种更智能、更简单的方法——尤其是在 Ubuntu 上。

这是确切的问题:可以使用用户 ROOT 访问远程服务器的本地用户 FOO 需要为用户 CEPH 设置密钥(可能还有用户)。对 n 个远程主机重复 n 次。

我缺少任何聪明的单线吗?

当前步骤:

scp -i digitalocean id_rsa.pub storage-1:/root
ssh -i digitalocean storage-1
useradd ceph
mkdir ~ceph/.ssh
cat id_rsa.pub >> ~ceph/.ssh/authorized_keys
chmod 700 ~ceph/.ssh
chmod 600 ~ceph/.ssh/authorized_keys 
chown ceph:ceph ~ceph/.ssh/authorized_keys 
chown ceph:ceph ~ceph/.ssh/
rm id_rsa.pub
ssh
  • 4 4 个回答
  • 5932 Views

4 个回答

  • Voted
  1. muru
    2015-04-06T14:39:15+08:002015-04-06T14:39:15+08:00

    您的部分问题在于创建.ssh. 我要做的是使用 use ssh-keygen,如果它不存在,它将创建它并正确设置权限(当然,为用户创建一个密钥对)。

    $ scp -i digitalocean id_rsa.pub storage-1:/tmp
    $ ssh digitalocean storage-1 '
    adduser --gecos "" --disabled-password  ceph
    echo | sudo -u ceph ssh-keygen  -N "" -f ~ceph/.ssh/id_rsa 
    sudo -u cp /tmp/id_rsa.pub ~ceph/.ssh/authorized_keys
    '
    

    笔记:

    • 使用adduser而不是useradd- 它创建一个骨架主目录,从/etc/skel.
    • --gecos ""并--disabled-password用于避免提示。如果您不介意输入名称和密码的提示,则可以跳过这些选项。
    • ssh-keygen可以.ssh使用正确的权限创建
    • 同样,-N ""和-f ~ceph/.ssh/id_rsa用于避免提示。如果您不介意密钥位置的提示(默认设置很好)并且希望设置密码,则可以跳过这些。
    • 既不需要.ssh也不.ssh/authorized_keys 需要700作为模式。只要只有所有者可以写信给他们,就可以了(755for.ssh和644for.ssh/authorized_keys都可以)。
    • 2
  2. Best Answer
    0xF2
    2015-04-06T14:10:03+08:002015-04-06T14:10:03+08:00

    因为这是 Digital Ocean,这个问题可以通过将用户数据设置为初始云实例启动的一部分来解决——下面将创建一个 ceph 用户,将其放入 sudoers 组,并配置提供登录所需的 SSH 密钥。

    #cloud-config
    users:
      - name: ceph
        groups: sudo
        shell: /bin/bash
        sudo: ['ALL=(ALL) NOPASSWD:ALL']
        ssh-authorized-keys:
          - ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDf0q4PyG0doiBQYV7OlOxbRjle026hJPBWD+eKHWuVXIpAiQlSElEBqQn0pOqNJZ3IBCvSLnrdZTUph4czNC4885AArS9NkyM7lK27Oo8RV888jWc8hsx4CD2uNfkuHL+NI5xPB/QT3Um2Zi7GRkIwIgNPN5uqUtXvjgA+i1CS0Ku4ld8vndXvr504jV9BMQoZrXEST3YlriOb8Wf7hYqphVMpF3b+8df96Pxsj0+iZqayS9wFcL8ITPApHi0yVwS8TjxEtI3FDpCbf7Y/DmTGOv49+AWBkFhS2ZwwGTX65L61PDlTSAzL+rPFmHaQBHnsli8U9N6E4XHDEOjbSMRX f2@digitalocean
    

    我仍然相信应该有一种不涉及云结构的聪明方法来做到这一点。

    • 1
  3. 0xF2
    2016-04-04T00:04:00+08:002016-04-04T00:04:00+08:00

    我通过修改这个问题的答案找到了一个更通用的解决方案,以在以另一个用户身份登录时完成此操作:

     cat ~/.ssh/id_rsa.pub | ssh root@storage-1 'useradd ceph; umask 0077; mkdir -p ~ceph/.ssh; cat >> ~ceph/.ssh/authorized_keys && echo "Key copied"'
    
    • 0
  4. Matthew Smith
    2016-04-04T00:06:21+08:002016-04-04T00:06:21+08:00

    您可以使用它ssh-copy-id来将 SSH 密钥传输到远程主机。

    例子:

    mallard@steamroller:~$ ssh-copy-id mallard@puter
    /usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
    /usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
    Password: 
    
    Number of key(s) added: 1
    
    Now try logging into the machine, with:   "ssh 'mallard@puter'"
    and check to make sure that only the key(s) you wanted were added.
    

    它会自动创建目录(例如.ssh)并将它们设置为正确的权限。

    • 0

相关问题

  • Gnome-terminal 快捷方式在选项卡中打开多个 ssh 连接

  • 通过 SSH 禁用密码访问?

  • ssh 如何使用多个私钥?

  • 如何通过一个 SSH 连接拥有多个终端会话?

  • 如何与无头服务器进行图形交互?

Sidebar

Stats

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

    如何运行 .sh 脚本?

    • 16 个回答
  • Marko Smith

    如何安装 .tar.gz(或 .tar.bz2)文件?

    • 14 个回答
  • Marko Smith

    如何列出所有已安装的软件包

    • 24 个回答
  • Marko Smith

    无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗?

    • 25 个回答
  • Martin Hope
    Flimm 如何在没有 sudo 的情况下使用 docker? 2014-06-07 00:17:43 +0800 CST
  • Martin Hope
    Ivan 如何列出所有已安装的软件包 2010-12-17 18:08:49 +0800 CST
  • Martin Hope
    La Ode Adam Saputra 无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗? 2010-11-30 18:12:48 +0800 CST
  • Martin Hope
    David Barry 如何从命令行确定目录(文件夹)的总大小? 2010-08-06 10:20:23 +0800 CST
  • Martin Hope
    jfoucher “以下软件包已被保留:”为什么以及如何解决? 2010-08-01 13:59:22 +0800 CST
  • Martin Hope
    David Ashford 如何删除 PPA? 2010-07-30 01:09:42 +0800 CST

热门标签

10.10 10.04 gnome networking server command-line package-management software-recommendation sound xorg

Explore

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

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve