без пароля ssh для іншого імені користувача?


14

Я хочу зробити без паролів ssh для підривного проекту. Зараз я використовую 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, правда? І локально, і віддалено?
користувач394

5
Ні. Просто додайте вміст вашого локального id_rsa.pubдо authorized_keysвіддаленої системи. Це спрацює.
Warren Young

1
по черзі, у багатьох системах є ssh-copy-id для вирішення цієї проблеми: "ssh-copy-id -i ~ / .ssh / id_rsa.pub ім'я користувача @ remote-machine"
Метт Сіммонс,

На жаль, багато хто цього не робить, і, здається, це не є стандартною частиною OpenSSH, тому існує хоча б пара різних реалізацій цього сценарію.
Воррен Янг

Якщо ви використовуєте морського коня gnome, у вас є автоматичне розгортання ключів.
Maciej Piechotka

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, тому я щось більше подібного набирав. :)
Warren Young

Я ніколи про це не чув ssh-copy-id. Я зазвичай використовую vimабо seahorse;)
Мацей П'єхотка

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
Краще, якщо ви додасте його у файл санкціонованих_кілей, інакше він також видалить ключі пабу інших. Тож краще, якщо ви відредагуєте свою відповідь на "cat >> .ssh / санкціонований_кейс"
Нітін Махеш,
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.