[英]I have to enter my login twice and ssh-key doesn't work on a dockerized gitlab
我使用以下命令啟動 gitlab:
sudo docker run --detach --hostname example.com --publish 4433:443 --publish 8080:80 --publish 2222:22 --name gitlab --restart always --volume /data/gitlab/config:/etc/gitlab --volume /data/gitlab/logs:/var/log/gitlab --volume /data/gitlab/data:/var/opt/gitlab gitlab/gitlab-ce:latest
example.com
是另一個 URL,您可能已經猜到了。
我有一個帶有此配置的 nginx 服務器:
server {
server_name example.com;
client_max_body_size 50m;
location / {
proxy_pass http://127.0.0.1:8080/;
proxy_set_header Host $http_host;
proxy_http_version 1.1;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote-addr;
}
listen 443 ssl;
ssl_certificate [MY PATH TO THE .pem FILE];
ssl_certificate_key [OTHER PATH];
include /etc/letsencrypt/options-ssl-nginx.conf;
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
}
server {
if ($host = example.com) {
return 301 https://$host$request_uri;
}
}
當我使用 HTTPS 克隆和推送 repos 時,我必須輸入我的登錄名/密碼兩次,當我使用 ssh(例如git clone git@example.com:myuser/myproject.git
)時,它會要求我輸入密碼。
我三重檢查,我的 ssh 密鑰配置是正確的。
我默認保留gitlab.rb
配置,除了這一行:
external_url 'https://example.com'
這里發生了什么?
對於這個特定的密鑰,我不使用密碼
這意味着 SSH 無法連接到 example.com 作為 git,並回退到身份驗證:git 的密碼(你不應該有)。
使用端口語法HOST_PORT:CONTAINER_PORT
,您應該啟動 GitLab Docker 容器,主機端口(例如 2222)映射到 GitLab 內部 SSH 守護程序(端口 22)
sudo docker run [...] -port 2222:22
然后檢查它是否正在使用:
ssh -T git@example.com -p 2222
Welcome to GitLab, @you!
使用 ~/.ssh/config 文件,更容易:
Host gl
hostname example.com
port 2222
User git
IdentityFile ~/.ssh/yourGitLabkey
然后:
ssh -T gh
Welcome to GitLab, @you!
請參閱此線程或此線程的示例,該線程基於官方文檔“ 使用 Docker Compose 安裝 GitLab ”,在問題 1767中提到。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.