我正在尝试为一个项目设置一个 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]