Белгілі бір доменге өту үшін SSH пернесін белгілеңіз

Келесі пайдалану жағдайлары бар: gitolite-admin пайдаланушының жеке кілтін қолданып [email protected]: gitolite-admin , ал мен «меншікті» жеке кілтімді қолданып [email protected]: some_repo түрткіңіз келеді. AFAIK, мен оны ~/.ssh/config арқылы шеше алмаймын, себебі екі жағдайда да пайдаланушы аты мен сервер атауы бірдей. Мен көбінесе өзімнің жеке кілтімді пайдаланатындықтан [email protected] үшін ~/.ssh/config анықталдым. Біреуі go шақыру үшін пайдаланылатын кілтті жоюдың тәсілін біле ме?

(Сонымен қатар: косолит кілтті негіздеуді кім жасайды, сондықтан пайдаланушы @ server жолы әртүрлі пайдаланушылар үшін бірдей болып табылады, сондықтан рұқсат, меншік және аудит тұрғысынан бұл проблема емес.)

279
Тікелей байланысты: stackoverflow.com/questions/4565700/…
қосылды автор Ciro Santilli 包子露宪 六四事件 法轮功, көзі

8 жауаптар

Пайдаланушы және хост бірдей болса да, олар әлі де ~/.ssh/config -де бөлектелуі мүмкін. Мысалы, сіздің конфигурацияңыз келесідей көрінсе:

Host gitolite-as-alice
  HostName git.company.com
  User git
  IdentityFile /home/whoever/.ssh/id_rsa.alice
  IdentitiesOnly yes

Host gitolite-as-bob
  HostName git.company.com
  User git
  IdentityFile /home/whoever/.ssh/id_dsa.bob
  IdentitiesOnly yes

Одан кейін URL мекенжайындағы хост атының орнына gitolite-as-alice және gitolite-as-bob қолданыңыз.

git remote add alice [email protected]:whatever.git
git remote add bob [email protected]:whatever.git

Ескерту

You want to include the option IdentitiesOnly yes to prevent the use of default ids. Otherwise, if you also have id files matching the default names, they will get tried first because unlike other config options (which abide by "first in wins") the IdentityFile option appends to the list of identities to try. See: https://serverfault.com/questions/450796/how-could-i-stop-ssh-offering-a-wrong-key/450807#450807

506
қосылды
Мен Git Bash арқылы терезелерді қолданамын. Идентификатор файлының жолы үшін жазамын: IdentityFile ~ davey/.ssh/id_rsa.davey немесе IdentityFile c: \ Users \ davey \ .ssh \ id_rsa.davey ?
қосылды автор David West, көзі
қосылды автор rottenoats, көзі
ssh-add ~/.ssh/identity (Linux, Mac) арқылы кілтіңізді ssh -ге қосқаныңызға көз жеткізіңіз, әйтпесе ол тіпті егер IdentifyFile ішінде көрсетіледі.
қосылды автор Tim, көзі
Керемет, рахмет. ~/.Ssh/config ішіндегі хост ерекшелігі үшін 'бүркеншік атауды' таңдауға болатынын түсінбеймін
қосылды автор Confusion, көзі
Қашықтан басқару құралындағы go @ бөлімі конфигурацияның User жолында көрсетілгендей қажет емес.
қосылды автор dolmen, көзі
Осындай конфигурацияны оңай қосу үшін github-keygen Github шоттары.
қосылды автор dolmen, көзі
үлкен жұмыс! Мен көптеген жылдар бойы шешім іздедім.
қосылды автор didando8a, көзі
Таза және өте пайдалы жауапқа көп рахмет. Мен осы жұмысты біраз уақытқа дейін алуға тырыстым және сол пайдаланушы сол id_rsa жеке кілт файлын қолдануы керек деген болжамдармен бас тартқан едім.
қосылды автор DrCord, көзі
Хостқа арналған IdentityFile жолынан кейін дереу IdentitiesOnly yes бар басқа жолды қосқанша осы шешіммен күресіп жүрдім. Ұқсас, бұл көптеген идентификаторлардан өтті және олардың біреуі хостқа кіруге тыйым салынған.
қосылды автор Fitter Man, көзі
Бұл жауап үшін рақмет! Мен үшін бір құсбелгі IdentityFile толық жол болуы керек еді (Мен id_rsa.rick тек IdentityFile үшін дәлел ретінде келтірдім, және бұл сәтсіз болды). IdentityFile үшін басқа синтаксис үшін ssh_config (5) адам бетін қараңыз.
қосылды автор rickumali, көзі
Ssh командалары жұмыс істегенде, мен go командалары бар репозиторийге кіруге тыйым салынған қатесін үнемі алдық. IdentitiesOnly yes жолын қосу мәселені шешті.
қосылды автор Justin Lau, көзі
шеберлігі сияқты жұмыс істейді.
қосылды автор Gaurav, көзі

Марк Лонгайрдың жоғары жағында ұсынылған нұсқасына балама көзқарас кез келген go пәрменін, кез келген қашықтан басқару пультіндегі, баламалы SSH пернесімен бірге орнатыңыз. Бұл идея негізінен go командаларын іске қосқанда SSH идентификаторын ауыстыру болып табылады.

Басқа жауапта иеленушінің бүркеншік тәсіліне қатысты артықшылықтар:

  • remote анық көрсетіле алмаса да кез келген git командасымен немесе бүркеншік атпен жұмыс істей береді.
  • Көптеген репозитарийлермен жұмыс істеу оңайырақ, себебі әрбір клиенттік құрылғыға бір рет қана орнату қажет, әр клиенттік компьютерде репозиторийге бір рет емес.

Мен бірнеше кішкене сценарийлер мен гитара бүркеншік admin қолданамын. Осылайша, мен мұны істей аламын, мысалы:

git admin push 

Балама («admin») SSH пернесін пайдалану арқылы әдепкі қашықтан басқару пультіне өту. Бұл бүркеншікпен тағы да кез келген пәрменді қолдануға болады ( push ). Сіз «admin» кілтін қолдануға рұқсатыңыз бар репозиторийді клондау үшін тіпті go admin clone ... де жасай аласыз.

Step 1: Create the alternative SSH keys, optionally set a passphrase in case you're doing this on someone else's machine.

Step 2: Create a script called “ssh-as.sh” that runs stuff that uses SSH, but uses a given SSH key rather than the default:

#!/bin/bash
exec ssh ${SSH_KEYFILE+-i "$SSH_KEYFILE"} "[email protected]"

Step 3: Create a script called “git-as.sh” that runs git commands using the given SSH key.

#!/bin/bash
SSH_KEYFILE=$1 GIT_SSH=${BASH_SOURCE%/*}/ssh-as.sh exec git "${@:2}"

Step 4: Add an alias (using something appropriate for “PATH_TO_SCRIPTS_DIR” below):

# Run git commands as the SSH identity provided by the keyfile ~/.ssh/admin
git config --global alias.admin \!"PATH_TO_SCRIPTS_DIR/git-as.sh ~/.ssh/admin"

More details at: http://noamlewis.wordpress.com/2013/01/24/git-admin-an-alias-for-running-git-commands-as-a-privileged-ssh-identity/

53
қосылды
Өте жақсы жауап. Қауіпсіз болу үшін $ @ -> «$ @» айналасында қос тырнақшалар қосуды ұмытпаңыз.
қосылды автор kevinarpe, көзі
@sinelaw Бұл әлі де жұмыс істей ме? Мен Permission әрқашан қатені қабылдамады
қосылды автор Alok Kumar, көзі

Go ауыспалы GIT_SSH_COMMAND айнымалы мәнін пайдалануға болады. Бұл терминді өзіңіздің қойма қоймаңызда іске қосыңыз:

GIT_SSH_COMMAND='ssh -i ~/.ssh/your_private_key' git submodule update --init

Пайдаланғыңыз келетін ssh жеке кілтінің жолымен ~/.ssh/your_private_key ауыстырыңыз. go pull , go fetch секілді басқаларға келесі пәрменді өзгертуге болады (мысалы go submodule update --init ), және т.б.

18
қосылды
Бір ортаны айнымалы мәннен басқа ештеңе талап етпейтін қарапайым шешім үшін рақмет.
қосылды автор Noah Sussman, көзі

Бір Unix негізделген жүйелер (Linux, BSD, Mac OS X), әдепкі идентификатор 2 файлда $ HOME/.ssh каталогында сақталады: жеке кілт: $ HOME/.ssh/id_rsa ашық кілт: $ HOME/.ssh/id_rsa.pub -s параметрінсіз ssh қолданған кезде қашықтағы жүйемен аутентификациялау үшін әдепкі жеке кілтін пайдаланады.

If you have another private key you want to use, for example $HOME/.ssh/deploy_key, you have to use ssh -i ~/.ssh/deploy_key ...

It is annoying. You can add the following lines in to your $HOME/.bash_profile : ssh-add ~/.ssh/deploy_key ssh-add ~/.ssh/id_rsa

Сондықтан ssh немесе go немесе scp (негізінен ssh ) қолданған сайын, -i параметрін қолданыңыз.

$ HOME/.bash_profile файлында қалағаныңызша көп кілтті қоса аласыз.

10
қосылды

Тағы бір балама - сіздің ssh идентификацияңызды басқару үшін ssh-ident .

Ол автоматты түрде жүктейді және әр түрлі кілттерді қолданыстағы жұмыс каталогы, ssh параметрлері және т.б. негізінде қолданады. Бұл дегеніміз, сіз әртүрлі кілттер мен тегтерді пайдалана отырып, ашық түрде жұмыс/каталог және жеке/каталогты оңай аласыз.

10
қосылды

Мен Win7-де Git Bash қолданамын. Келесідер маған жұмыс істеді.

~/.Ssh/config немесе c:/users/[your_user_name]/.shsh/config конфигурация файлын жасаңыз. Файлды енгізіңіз:

Host your_host.com
     IdentityFile [absolute_path_to_your_.ssh]\id_rsa

Менің ойымша, иесі тек қана «аты» немесе сіздің хостыңыз үшін референт емес URL болуы керек. Мысалға,

Host github.com
     IdentityFile c:/users/[user_name]/.ssh/id_rsa

Жолды/c/users/[user_name]/.... форматында жазуға болады

The solution provided by Giordano Scalzo is great too. https://stackoverflow.com/a/9149518/1738546

7
қосылды

Егер Git-дың windows-дегі ssh нұсқасын қолдансаңыз, ssh конфигурациясындағы сәйкестік файлының жолы ұқсас

IdentityFile /c/Users/Whoever/.ssh/id_rsa.alice

where /c is for c:

Тексеру үшін, GO'Bash-те жасаңыз

cd ~/.ssh
pwd 
3
қосылды

You might need to remove (or comment out) default Host configuration .ssh/config

2
қосылды