SSH без пароля для другого имени пользователя?


14

Я хочу сделать ssh-соединение без пароля для проекта subversion. Сейчас я использую ssh + svn, и это немного раздражает, потому что мне нужно вводить пароль каждый раз, когда я хочу заключить сделку с сервером.

В Интернете я нашел несколько учебных пособий о том, как сгенерировать ключ для ssh без пароля, но все они, похоже, предполагают, что я использую то же имя пользователя в удаленной системе, что и для своей домашней системы. Однако имя пользователя, которое я использую для ssh + svn, отличается от имени учетной записи пользователя в системе, где я работаю. Как мне правильно это настроить? Мне не повезло с изменением имени в файле ключей.

Ответы:


15

Вам просто нужно указать имя пользователя другой системы в svnкоманде:

$ svn co svn+ssh://otheruser@othersystem/path/to/repo

Чтобы ответить на заголовок вашего вопроса, тоже:

$ ssh otheruser@othersystem

Это заставляет sshdна удаленном компьютере искать ~otheruser/.ssh/authorized_keysоткрытый ключ, соответствующий закрытому ключу на компьютере, на котором вы вводите команду.


1
Таким образом, часть инструкций состояла в том, чтобы создать файл .ssh/id_rsa.pubи загрузить его на удаленный сервер. Когда я сделал это, это закончилось localusername @ localsystem. Это должно быть изменено на remoteusername @ remotesystem, верно? И локально, и удаленно?
user394

5
Нет. Просто добавьте содержимое вашего локального id_rsa.pubк authorized_keysудаленной системе. Это сработает.
Уоррен Янг

1
альтернативно, во многих системах есть ssh-copy-id для решения этой проблемы: «ssh-copy-id -i ~ / .ssh / id_rsa.pub username @ remote-machine»
Мэтт Симмонс

К сожалению, многие этого не делают, и кажется, что это не стандартная часть OpenSSH, поэтому существует как минимум пара различных реализаций этого скрипта.
Уоррен Янг

Если вы используете гном морского конька, есть автоматическое развертывание ключей.
Мацей Пехотка

9

Есть два способа сделать это:

1) положить пользователя @ в URL-адрес SVN; это говорит svn + ssh для входа в систему как этот пользователь. Я думаю, что это плохая идея с точки зрения обслуживания, потому что такие вещи, как внешние объекты, которые указывают на другие части хранилища, не будут работать правильно.

2) создайте ~ / .ssh / config (задокументированный как ssh_config ), который говорит что-то вроде:

Host othersystem
  User otheruser

таким образом, любая попытка ssh в другие системы по умолчанию будет использовать другой пользователь. Что удобно для вас, когда вы делаете ssh вручную, а также когда вы используете svn.


5

Вам не нужно иметь одинаковое имя пользователя на обеих машинах. Пока вы генерируете ключ ( ssh-keygen), вы должны копировать строку с ~/.ssh/id_rsa.pubили ~/.ssh/id_dsa.pub(в зависимости от типа ключа) с локального сервера и добавлять ее к ~/.ssh/authorized_keysудаленному.

% ssh-keygen
% cat ~/.ssh/id_*.pub | ssh remoteuser@remoteserver 'cat > .ssh/authorized_keys'

Если вы не хотите вводить remoteuserкаждый раз, добавьте ~/.ssh/config:

Host remoteserver
    User remoteuser

PS. Имя ключа может быть в форме , localuser@localhostно это только название . Это может быть так же хорошо, myfavouritekey@myfavouritecomputerи никто не будет заботиться.


Команда «cat» выше является ядром общего, но нестандартного ssh-copy-idсценария, упомянутого выше. Я признаю это, потому что не все системы ssh-copy-id, которыми я пользуюсь, поставляются , поэтому я набрал нечто подобное несколько раз. :)
Уоррен Янг

Я никогда не слышал о ssh-copy-id. Я обычно использую vimили seahorse;)
Maciej Piechotka

0

После того как я создаю .ssh / config и запускаю:

cat ~/.ssh/id_*.pub | ssh remoteuser@remoteserver 'cat > .ssh/authorized_keys'

Я получаю ошибку:

Bad owner or permissions on /usr/share/eprints3/.ssh/config

затем я добавляю chmod 600 .ssh/config, и после этого он работает гладко.

enter code here

1
Лучше, если вы добавите его в файл author_keys, иначе он также удалит ключи публикации других пользователей. Так что лучше, если вы отредактируете свой ответ с помощью 'cat >> .ssh / authorized_keys'
Нитин Махеш
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.