无法打开用户的ssh/authorized_keys文件

9
我知道对于你们中的一些人来说,这可能是微不足道的。
我不是一个Linux专家,我正在尝试使用git。为此,我想尝试将我的公共SSH密钥添加到用户git的~/.ssh/authorized_keys中。
问题在于,当我使用putty登录到带有git用户的服务器时,我无法访问任何名为~/.ssh/authorized_keys的文件。
因此,我尝试用root进行操作,也许这是解决办法,但我认为每个用户只有一个authorized_keys
我可以看到授权密钥,但我不想把一切都搞砸了,所以我想搞清楚这一点。 有没有办法使用我的git用户帐户并修改ssh/authorized_keys
非常感谢!

为什么不直接创建一个新的键并将其命名为其他名称呢? - noMAD
4个回答

15
听起来你已经接近成功了!但我不确定你到底完成了什么,所以我会解释整个过程。
首先,我猜测(因为你正在使用PuTTY),你的电脑运行的是Windows系统?如果是这样,你需要先安装Git for Windows,可以从官方Git网站下载。下载并安装Git for Windows,安装程序中选择默认选项即可。
安装后,开始菜单中会出现一个名为Git Bash的项目。你将使用它来执行下一步操作。(你实际上不需要安装Git本身,但是Git for Windows安装程序会添加一些额外的工具,如ssh-keygen,你将需要它们。)
如果你的电脑实际上运行的是Linux或Mac OS X而不是Windows,则你已经拥有所需的工具。你可以按照相同的说明进行操作,但是不要使用Git Bash输入命令,而应该使用终端窗口。
从现在开始,我只会提到在“终端”中输入命令。如果你使用的是Windows,那么请输入这些命令到Git Bash窗口中。

第一步:检查是否存在SSH密钥对

在终端中输入:
ls ~/.ssh/id_rsa*

这里应该列出两个文件:id_rsa和id_rsa.pub。如果它们存在,请继续第二步。如果不存在,请输入:

ssh-keygen

按照提示创建它们,然后再次运行ls命令以确认它们现在已经存在。

步骤2:将您的公共SSH密钥上传到服务器

公钥称为id_rsa.pub。您可以使用scp命令将其上传到服务器:

scp ~/.ssh/id_rsa.pub git@my-server.com

当提示时,请输入git用户的密码。

第三步:将您的密钥添加到git用户的authorized_keys文件中

首先以git用户身份通过SSH登录到服务器:

ssh git@my-server.com

再次输入git用户的密码。一旦您成功以git用户身份登录,输入以下内容:

mkdir -p ~/.ssh/

如果.ssh目录不存在,它将创建该目录。如果已经存在,则不会进行任何操作。

现在将您的密钥添加到authorized_keys文件中:

cat ~/id_rsa.pub >> ~/.ssh/authorized_keys

这将获取 id_rsa.pub 文件的内容(即您刚刚上传的文件),并将其添加到 authorized_keys 文件的末尾。如果 authorized_keys 不存在,该命令将首先创建它。

(注意:在该命令行中一定要输入两个右尖括号 (>>)。两个右尖括号表示附加 id_rsa.pub 的内容到 authorized_keys 文件。如果您只使用一个右尖括号,那么将会替换 authorized_keys 文件的内容为 id_rsa.pub 的内容,您不希望这样做。)

您可以通过运行 cat 命令检查是否成功,确保您可以在 authorized_keys 文件的末尾看到 id_rsa.pub 的内容:

cat ~/id_rsa.pub
cat ~/.ssh/authorized_keys

确认后,删除id_rsa.pub;您不再需要它。

rm ~/.ssh/id_rsa.pub

最后,设置 .ssh 目录和 .ssh/authorized_keys 文件的权限,以便只有这些文件的所有者(即 git 用户)可以访问它们。否则,SSH 服务器将拒绝使用它们。所以:

chmod 700 ~/.ssh
chmod 400 ~/.ssh/authorized_keys

这使得该目录只能被git用户使用,其中的文件也只能被git用户访问。

你应该发现现在可以正常使用了!


非常感谢,我刚刚看到了你的答案,它对我帮助很大。 - Thoma Biguères
太好了,Thomas,很高兴能帮到你。 :-) - Simon Whitaker
1
我执行了 chmod 600 ~/.ssh/authorized_keys 命令,这样我就可以写入该文件了。 - Jess
1
或者使用 ssh-copy-id 脚本将它们附加到远程用户的 ~/ssh/authorized_keys 文件中(如有必要,将创建文件和目录)。 - StickySli

2

默认情况下,.ssh目录和authorized_keys文件不存在,您需要创建它们。确保该目录具有0700的权限,其中的文件具有0600的权限,否则ssh将无法工作。


0

我曾遇到过同样的问题,以下是解决方法:

chown -R NEW_USER /home/NEW_USER
chown -R NEW_USER /opt/git

原来我拥有错误的文件所有者,这可能是我创建用户时搞砸了。当然,我的新用户是“git”。
这种错误会导致SSH连接出现问题,因为用户“git”无法访问“~/.ssh/authorized_keys”。
希望这能帮助其他人解决问题。

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接