В моем случае я хочу сделать проверку SVN:
svn co svn+ssh://10.106.191.164/home/svn/shproject
Тем не менее, я хочу, чтобы пароль был в этой строке, чтобы он не всплывал.
В моем случае я хочу сделать проверку SVN:
svn co svn+ssh://10.106.191.164/home/svn/shproject
Тем не менее, я хочу, чтобы пароль был в этой строке, чтобы он не всплывал.
Учитывая, что вы используете SSH, предпочтительным способом является использование открытого ключа для авторизации, что полностью избавляет от необходимости ввода пароля.
Руководство по созданию и установке ключей можно найти здесь.
svn co svn+ssh:// имя пользователя: пароль@10.106.191.164/home/svn/shproject
Бесконечно лучше создать пару ключей. Как ваш локальный пользователь:
$ ssh-keygen -t rsa
(принять все значения по умолчанию)
Затем возьмите содержимое .ssh/id_rsa.pub и добавьте его на удаленном сервере в .ssh/authorized_keys. Убедитесь, что оно вставлено в одну строку. Также убедитесь, что разрешения для каталога .ssh равны 600.
Тогда вы сможете использовать ssh без запроса пароля.
Вместо использования пароля вы можете захотеть взглянуть на пару закрытых / открытых ключей и использовать ее в ssh. большинство дистрибутивов Linux поставляются с простыми в использовании командами для создания такой пары. однако для этого потребуется доступ на серверную сторону (один раз) для размещения файла открытого ключа в файле ~ / .ssh / authorized_keys вашего пользователя.
Ну, я хочу , чтобы ввести пароль - мне не нравится полагаться на мой пароль сохраняются где - то; тем не менее, я хочу ввести его один раз для набора команд 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.
Ну, по крайней мере, я рад, что наконец нашел решение, которое работает для меня - надеюсь, что это поможет кому-то еще,
Ура!
svn co svn+ssh://10.106.191.164/home/svn/shproject --non-interactive --trust-server-cert --username <username> --password <password> --no-auth-cache
Я думаю, что использование 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
Вы также можете использовать данные переключатели имя пользователя и пароль.