8

В моем случае я хочу сделать проверку SVN:

svn co svn+ssh://10.106.191.164/home/svn/shproject

Тем не менее, я хочу, чтобы пароль был в этой строке, чтобы он не всплывал.

8 ответов8

16

Учитывая, что вы используете SSH, предпочтительным способом является использование открытого ключа для авторизации, что полностью избавляет от необходимости ввода пароля.

Руководство по созданию и установке ключей можно найти здесь.

12

svn co svn+ssh:// имя пользователя: пароль@10.106.191.164/home/svn/shproject

7

Бесконечно лучше создать пару ключей. Как ваш локальный пользователь:

$ ssh-keygen -t rsa

(принять все значения по умолчанию)

Затем возьмите содержимое .ssh/id_rsa.pub и добавьте его на удаленном сервере в .ssh/authorized_keys. Убедитесь, что оно вставлено в одну строку. Также убедитесь, что разрешения для каталога .ssh равны 600.

Тогда вы сможете использовать ssh без запроса пароля.

6

Вместо использования пароля вы можете захотеть взглянуть на пару закрытых / открытых ключей и использовать ее в ssh. большинство дистрибутивов Linux поставляются с простыми в использовании командами для создания такой пары. однако для этого потребуется доступ на серверную сторону (один раз) для размещения файла открытого ключа в файле ~ / .ssh / authorized_keys вашего пользователя.

3

Ну, я хочу , чтобы ввести пароль - мне не нравится полагаться на мой пароль сохраняются где - то; тем не менее, я хочу ввести его один раз для набора команд svn+ssh; и часто, вы просто хотите сделать одну svn checkout - и в любом случае вам придется вводить тонны паролей. Именно в таком случае я бы хотел ввести пароль только один раз.

Таким образом, только ответы @Boinst и @Marius были актуальны для моего варианта использования; к сожалению, они не помогли, так как я не мог заставить их работать. Интересно, сами авторы постов опробовали команды перед их публикацией, поскольку теперь я не представляю, как они могут работать - вот тест, который я провел локально на своем компьютере с Ubuntu 10.04 (и я ломаюсь с помощью Ctrl-C, каждый раз, когда вижу появится запрос пароля):

$ svn --version | head -1
svn, version 1.6.6 (r40053)

$ cd /tmp
$ svnadmin create myrepo
$ read -p 'ssh myself@127.0.0.1? ' PASS
ssh myself@127.0.0.1? [type _PASSWORD_, press ENTER]

## trying first with https://superuser.com/a/71479/39752 
# (specify in URL user:pass separated by colon)

## plain ssh - asks for password anyway:

$ ssh myself:$PASS@127.0.0.1
myself:_PASSWORD_@127.0.0.1's password: ^C

# svn - with just username, as expected:

$ svn co svn+ssh://myself@127.0.0.1/tmp/myrepo myrepo-wc
myself@127.0.0.1's password: ^C
svn: Network connection closed unexpectedly

# svn - with password added to URL, asks for password anyway:

$ svn co svn+ssh://myself:$PASS@127.0.0.1/tmp/myrepo myrepo-wc
myself:_PASSWORD_@127.0.0.1's password: ^C
svn: Network connection closed unexpectedly

# trying then with https://superuser.com/a/380426/39752, https://superuser.com/a/327822/39752
# (--non-interactive and --username/--password on command line)

# svn - asks for password anyway:

$ svn co svn+ssh://myself@127.0.0.1/tmp/myrepo --non-interactive --trust-server-cert --username myself --password $PASS --no-auth-cache
myself@127.0.0.1's password: ^C
svn: Network connection closed unexpectedly

Что касается --username/--password в командной строке svn - это не имеет значения для svn+ssh , потому что это ssh , а не svn:

svn - Subversion игнорирует опции "--password" и "--username" - Переполнение стека

Приглашение, которое вы получаете, не похоже на Subversion, запрашивающую пароль, похоже на ssh, запрашивающее пароль.

Кроме того, как показывает журнал, сама ssh не принимает в качестве имени пользователя « username:password@... », как и svn . Почему допустимо использовать только имя пользователя в URL в svn , вероятно, объяснено в ~/.subversion/config:

### (Если URL содержит имя пользователя, то имя хоста будет
### передан агенту туннеля как @.)

Обратите внимание, что ничего не сказано о <user>:<pass>@<hostname> .

Теперь, благодаря странице Subversion поверх SVN+SSH в Debian, я наконец-то понял, что есть переменная окружения SVN_SSH используемая в ~/.subversion/config для (я предполагаю) туннеля ssh; и это, наконец, открывает возможность использовать программу sshpass для обработки пароля таким способом:

$ SSHPASS=$PASS SVN_SSH="sshpass -e ssh" svn co svn+ssh://myself@127.0.0.1/tmp/myrepo myrepo-wc
Checked out revision 0.

Ну, по крайней мере, я рад, что наконец нашел решение, которое работает для меня - надеюсь, что это поможет кому-то еще,
Ура!

2
svn co svn+ssh://10.106.191.164/home/svn/shproject --non-interactive --trust-server-cert --username <username> --password <password> --no-auth-cache
1

Я думаю, что использование sshpass (в Linux) - лучший способ получить это.

Установить sshpass

$ sudo apt-get install sshpass

Установите временную переменную среды

$ export SSHPASS=*yourpass*

Отредактируйте конфигурационный файл SVN

$ nano ~/.subversion/config

Наконец закомментируйте добавьте sshpass -e в строку ssh перед командой ssh

ssh = $SVN_SSH sshpass -e ssh -q -o ControlMaster=no
1

Вы также можете использовать данные переключатели имя пользователя и пароль.

См. Проверка подлинности командной строки.

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