ssh-copy-id 权限被拒绝

ssh-copy-id 权限被拒绝

我正在尝试为一个项目设置一个 git 存储库,因此我想使用 ssh 密钥,以免每次都重新输入密码。我偶然发现了让 ssh 进行复制工作的可能性ssh-copy-id,但它似乎不适合我。

$ ssh-copy-id -i git@server
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: 
"/c/Users/Me/.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
git@server's password:
sh: 1: cannot create .ssh/authorized_keys: Permission denied

编辑:我通过以下方式解决了问题: - 通过su登录root - 通过将authorized_keys文件的所有权更改chown git /home/git/.ssh/authorized keys为git - 然后重新登录git - 最后将rw权限更改为600 viachmod 600 ~/.ssh/authorized keys并成功复制密钥

答案1

如果一个帐户专用于 git 使用,那么管理员将其设置为受限帐户是有意义的,只允许运行 git 命令。特别是,git 访问权限不足以更改帐户的凭据和限制。这是通过~/.ssh/authorized_keys用户不可写的 a 来完成的。通常有一个带外机制来设置凭据,例如 Web 界面。

如果您是管理员,则需要深入了解 git 帐户的设置方式。检查 SSH 服务器配置(/etc/sshd_config/etc/ssh/sshd_config查看authorized_keys文件所在位置(AuthorizedKeysFile设置)。找到文件后,将公钥添加到其中:authorized_keys文件只是行列表,每个文件通常包含直接复制的公钥.pub检查配置以查看是否应在文件末尾添加对密钥使用的限制(例如)command="git-shell" nopty no-agent-forwarding no-port-forwarding no-X11-forwarding

答案2

由于在谷歌搜索此错误时,这个问题出现在第一个搜索结果中,因此我还将添加我的解决方案:

就我而言,这与权限无关。出于任何原因(实际上我并没有费心找出原因,因为我找到了一个快速修复方法),在执行 ssh 命令时,程序没有查找正确的身份文件。一种解决方案是在远程服务器上添加 SSH 程序尝试使用的 SSH 密钥。可以通过在命令中添加 -v 来观察 SSH 程序在执行命令时做了什么:

ssh -v username@your-host-ip-or-domain 

然后,您只需在本地计算机上获取 SSH 程序尝试使用的任何公钥,例如(在 Mac 上):

cat ~/.ssh/id_rsa.pub

...并将其添加到远程的authorized_keys文件中:

~/.ssh/authorized_keys

就我而言,另一个更好的解决方案是在本地 ssh 配置文件中添加自定义主机。在我的 Mac 上是:

/Users/my-user-name/.ssh/config

例如,您可以在这里添加如下内容:

Host mynewserver
        HostName some.IP.number.or.domain
        Port 20000 #if custom port is used and not the default 22
        User the_root
        PreferredAuthentications publickey
        IdentityFile ~/.ssh/id_rsa_for_my_new_server

然后你只需要执行:

ssh mynewserver

...瞧

答案3

假设我们有 2 台机器,“A”和“B”,现在您想要从 A 连接到“B”

所以在B机器中执行以下操作

vi /etc/ssh_sshd_config

现在搜索这两行并更改为以下内容,如下所示。

PasswordAuthentication yes

PermitRootLogin yes

现在重新启动“B”机器中的 sshd 服务

service sshd restart

现在将密钥从“A”机器复制到“B”机器,我希望它能正常工作

ssh-copy-id [email protected]

相关内容