В моем случае я хочу сделать проверку SVN:
svn co svn+ssh://10.106.191.164/home/svn/shproject
Однако я хочу, чтобы пароль был в одной строке, чтобы он не всплывал.
В моем случае я хочу сделать проверку SVN:
svn co svn+ssh://10.106.191.164/home/svn/shproject
Однако я хочу, чтобы пароль был в одной строке, чтобы он не всплывал.
Ответы:
svn co svn + ssh: // имя пользователя: пароль@10.106.191.164/home/svn/shproject
sshpass
(который работает для меня).
Учитывая, что вы используете SSH, предпочтительным способом является использование открытого ключа для авторизации, что полностью избавляет от необходимости ввода пароля.
Руководство по созданию и установке ключей можно найти здесь .
Бесконечно лучше создать пару ключей. Как ваш локальный пользователь:
$ 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@...
" в URL-адресе - и так не делает 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.
Ну, по крайней мере, я рад, что наконец нашел решение, которое работает для меня - надеюсь, это поможет кому-то еще,
ура!
Вы также можете использовать данные переключатели имя пользователя и пароль .
Я думаю, что использование 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