Я знаю, что что-то подобное спрашивалось несколько раз, но я не смог найти правильное решение для моего случая.

У меня есть собственный репозиторий git, доступный через ssh через нестандартный порт; URL-это что-то вроде:

git clone ssh://myname@my.repo.host:12345/path/to/repo/project.git

закрытый ключ для этого репозитория находится в ~/.ssh/myname.prv .

Я пытаюсь получить доступ к репо без паролей, но у меня не получается.

Мой текущий ~/.ssh/config имеет строфу:

Host git
    HostName my.repo.host
    Port 12345
    User myname
    IdentityFile ~/.ssh/myname.prv

... но Git все еще просит PW.

Что мне не хватает?

Примечание: и сервер, и клиент - довольно недавние Linux-машины, и я работаю в командной строке, если это имеет значение.

1 ответ1

2

Я полагаю, вы неправильно понимаете использование файла ~/.ssh/config . У тебя есть:

Host git
    HostName my.repo.host
    ...

Однако первая строка Host git определяет имя (псевдоним) (то есть git) хоста, к которому нужно подключиться, и имя, которое вы указываете в командной строке для ssh или git . То есть теперь вы можете подключиться к ssh к вашему git-серверу через

ssh git

... и вы можете клонировать репозиторий git, используя свое «нестандартное» имя хоста, используя:

git clone ssh://git/path/to/repo/project.git

Обратите внимание, что ваш пульт дистанционного управления теперь будет origin качестве источника именно этот адрес, который зависит от вашего конфигурационного файла ssh .

В качестве альтернативы, если вы хотите сохранить my.repo.host в адресе вашего git remote, измените ваш ~/.ssh/config образом:

Host my.repo.host
    #HostName my.repo.host
    Port 12345
    User myname
    IdentityFile ~/.ssh/myname.prv

(ПРИМЕЧАНИЕ. В этом случае директива HostName является избыточной, поэтому я оставил ее закомментированной. )

С этим вы можете упростить ваш пульт и клонировать, используя:

git clone ssh://my.repo.host/path/to/repo/project.git

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .