gitlab 配置完ssh 之后依然需要输入密码

通过 ssh-keygen -t rsa -C "devops@e2uninova.com" 生成了私钥和公钥 将公钥内容复制到gitlab的ssh key中后,出现下列问题,求解答下是什么情况。删除了私钥公钥重新生成后依然是这个问题

[devops@ds002 .ssh]$ ssh -T git@gitlab.srv
git@gitlab.srv's password:

找到问题原因了 原因是因为我是docker部署的gitlab 把gitlab的22端口映射到了宿主机的8022端口 但是ssh clone的时候依然是去找的宿主机的22端口 这个请问下能怎么解决呢

你这是没找到文件啊


SSH密钥允许你的计算机和gitlab之间建立安全连接。
1、检查SSH秘钥是否存在。右击git bash打开终端执行命令 :cat ~/.ssh/id_rsa.pub

2、若密钥不存在,则生成SSH 密钥 。在git bash上面执行命令:
 ssh-keygen -t rsa -C "xiaoming@qq.com"

xiaoming@qq.com是邮箱,随便填。完成后就会在C:\Users\Administrator\.ssh下生成两个文件:
 私钥 id_rsa.
 公钥 id_rsa.pub
3、 在GitLab上添加SSH key。执行命令查看公钥:cat ~/.ssh/id_rsa.pub

 打开gitlab的找到User Settings下的SSH Keys,在Add an SSH key中,复制 id_rsa.pub中的内容或上图中查询到的密钥到key这里,在title这里给这个key设置一个名字,点击Add key就完成了。

错误提示你配置完ssh后,对应的目录.ssh或者.ssh下的密钥id_rsa没有生成,提示找不到目录或者文件。你可以使用cat命令看下能不能查看到这个目录或者文件。注意要给.ssh目录设置访问权限,chmod 777

一般是用户目录的权限问题,可以确认下 /home/devops 以及 /home/devops/.ssh的权限,改成700试试

?为啥不是直接ssh 去拉对应仓库的内容,而是直接ssh登录?
比如A机器,想免密去拉 gitlab上的仓库的内容,想使用SSH的话,
机器A直接生成密钥对,将公钥复制到 gitlab对应的用户中,

img


直接直接拉代码:

img

  1. 你的密钥没问题已经找到了,但是你这个密钥只能用来clone项目的,不能直接ssh login的
    debug1: identity file /home/devops/.ssh/id_rsa type 1
    
  2. 请确认下你的id_rsa.pub的内容是给pv这个用户了

如果在配置 SSH 后仍然需要输入密码,可能是以下原因导致的:

SSH 密钥不正确,请确保使用正确的密钥。
SSH 密钥没有添加到 ssh-agent 中,请使用命令 ssh-add 添加密钥。
GitLab 上没有添加 SSH 密钥,请登录 GitLab 并添加密钥。
防火墙或网络配置导致 SSH 连接被阻止。
请检查并确保以上问题都已解决,如果还是不行,可以尝试重新生成ssh密钥。

问题出在 ssh 客户端试图使用错误的密钥进行身份验证,更具体来说,是试图使用默认的密钥文件 (id_rsa, id_dsa, id_ecdsa, id_ed25519) 但是找不到对应的文件。

您需要在 ssh-keygen 生成的公钥文件的目录下,将其重命名为 id_rsa.pub ,然后将私钥文件重命名为 id_rsa。 这样,当您使用 ssh-keygen 生成的密钥时,ssh 客户端才能找到它们。

如果您使用 ssh-keygen 生成的密钥文件命名为其他名称,则需要使用 -i 参数来指定密钥文件的位置,如 ssh -i ~/.ssh/my_rsa git@gitlab.srv,看这段输出,它提示了一个问题:"debug1: key_load_public: No such file or directory"。这意味着 ssh 客户端在尝试加载公钥时找不到文件。您需要检查您是否在正确的目录中生成了密钥,并且确保 ssh 客户端正在使用正确的密钥。您可以使用 ssh-add 命令添加密钥,并检查 ssh-add -l 命令以确保密钥已加载。

如果这些都没有解决问题,您可以尝试更改 ssh 配置文件(通常位于 /etc/ssh/ssh_config 或 ~/.ssh/config)中的 IdentityFile 选项,以指定 ssh 客户端应该使用的公钥文件的位置。

如果这些都没有解决问题,您可能需要重新生成公钥和私钥并将新公钥添加到 GitLab 中。


如果您的 GitLab 是在 Docker 中运行的,您需要将其映射到宿主机的特定端口。要解决问题,请执行以下步骤:

修改 ssh 配置文件:使用编辑器打开 ~/.ssh/config 文件,并添加以下内容:

Host gitlab.srv
  HostName localhost
  Port 8022
  User git
  IdentityFile ~/.ssh/id_rsa


重新测试 ssh 连接:使用以下命令测试 ssh 连接:


$ ssh -T git@gitlab.srv

如果配置正确,您应该不再需要输入密码。

请注意,您需要将上面的配置更改为您自己的特定设置,包括 GitLab 服务器地址、用户名、端口和私钥文件路径。

你可以在SSH命令中指定端口号,例如:

$ git clone ssh://git@your-gitlab-hostname:8022/your-namespace/your-repo.git

或者,你可以修改本地主机的SSH配置文件(例如,~/.ssh/config)来创建一个GitLab的别名,并且指定这个别名的端口:

Host gitlab
    HostName your-gitlab-hostname
    Port 8022
    User git

然后你就可以通过如下命令克隆:


$ git clone ssh://gitlab/your-namespace/your-repo.git