У моєму випадку я хочу зробити замовлення на 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 / pooblasti_keys Будьте впевнені, що він вставлений у один рядок. Також будьте впевнені, що дозволи в каталозі .ssh дорівнюють 600.
Тоді ви повинні мати змогу ssh, не запрошуючи пароль.
Замість використання пароля ви можете ознайомитись із парою приватного / відкритого ключа та використовувати ssh. Більшість дистрибутивів Linux мають прості у використанні команди для створення такої пари. однак це вимагатиме доступу з боку сервера (один раз) для здачі файлу відкритого ключа у файл користувача / /.
Ну, я дійсно хочу , щоб ввести пароль - мені не подобається покладатися на мій пароль зберігаються де - то; однак я хочу ввести його один раз для набору команд 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