如何为 Linux 中的特定用户添加 ssh 密钥?

如何为 Linux 中的特定用户添加 ssh 密钥?

我有 Ubuntu 18.04,我们有一个管理员帐户和一个其他用户的帐户。我已添加需要管理员帐户管理员访问权限的用户的公共 SSH 密钥,但是当我尝试对单个用户执行相同操作时,我在该用户的目录中看不到该authorized_keys文件。.ssh我应该如何进行这里?

以下是我尝试过的命令:

cd /home
cd /admin
ls -a
nano .ssh/authorized_keys

然后我将公钥添加到管理员帐户。这适用于管理员,但对于其他用户我看不到任何authorized_keys文件。

答案1

生成 ssh 密钥:

ssh-keygen -t rsa -b 4096 -C "comment"

将其复制到您的远程服务器:

ssh-copy-id user@ip

或者您可以手动将其附加~/.ssh/id_rsa.pub~/.ssh/authorized_keys

ssh user@ip 'mkdir ~/.ssh'
ssh user@ip 'cat >> ~/.ssh/authorized_keys' < ~/.ssh/id_rsa.pub

答案2

该文件是在您运行时创建的ssh-copy-id <user>@<server>,例如:

sylvester@host3:~> ssh-copy-id arnold@host4
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/home/sylvester/.ssh/id_rsa.pub"
/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 'arnold@host4'"
and check to make sure that only the key(s) you wanted were added.

该文件尚不存在,因为没有人为该用户添加任何内容。

答案3

您不需要任何特定的工具来创建授权密钥文件,或告诉任何特定的程序它存在。sshd每次用户尝试登录时都会查找它。

非常简单,如果它不存在,您可以像为不同用户编辑现有文件一样创建它。

你什么需要做的是确保权限被充分锁定,否则sshd将拒绝信任该文件。因此,为用户创建一个完全空的主目录的步骤joebloggs如下所示:

# Create the .ssh directory, and set its permissions
mkdir ~joebloggs/.ssh
chown joebloggs ~joebloggs/.ssh
chmod 0700 ~joebloggs/.ssh

# Create the authorized keys file, and set its permissions
touch ~joebloggs/.ssh/authorized_keys
chown joebloggs ~joebloggs/.ssh/authorized_keys
chmod 0600 ~joebloggs/.ssh/authorized_keys

这将创建一个完全空的.ssh/authorized_keys文件,该文件只能joebloggs访问、读取和写入。

这是最低限度需要许可,遵循最小权限原则。如果需要,您可以允许特定组 ( chgrp -R some-group ~joebloggs/.ssh; chmod 750 ~joebloggs/.ssh; chmod 640 ~joebloggs/.ssh/authorized_keys) 或系统上的所有用户 ( )进行只读访问chmod 755 ~joebloggs/.ssh; chmod 644 ~joebloggs/.ssh/authorized_keys。重要的是他们不能否则 SSH 守护进程将不信任其内容。

答案4

  1. ssh-keygen(按 Enter 键/不输入任何密码)

  2. ssh-keyscan hpc.university.edu > known_hosts(按输入键)

  3. ssh-copy-id [email protected](按Enter)在这种情况下你可能需要一些密码才能通过大学VPN,你可以输入它们)

相关内容