svn客戶端報錯Cannot negotiate authentication mechanism的解決方法:算法
問題出現的緣由之一:ubuntu
由於SVN服務器配置了saslauthd服務用來實現與ldap的對接,所以認證的機制發生了變化,因此客戶端須要安裝組件才能夠:centos
很簡單對於RHEL/CentOS,客戶端只須要yum安裝相應的包便可:bash
yum -y install cyrus-sasl-plain服務器
ubuntu系統還沒有測試,請查找對應的包安裝便可dom
問題出現的緣由之二:可能與svn的版本或源碼安裝時選擇的模塊有關svn
能夠經過svnserve --version測試
查看是否支持相應的功能,若是不支持則須要升級軟件版本,這裏再也不贅述ui
2、svn+saslauthd+openldap的配置方法加密
這裏主要以saslauthd的配置爲主,openLDAP配置請查看其它文檔
一、首先開啓saslauthd服務會有選擇認證機制的參數‘MECH’
這個參數會從/etc/sysconfig/saslauthd文件中去獲取以環境變量的方式加載
二、須要配置LDAP服務器和認證的相關參數(/etc/saslauthd.conf沒有須本身建立):
ldap_servers: ldap://<LDAP服務器IP地址> ldap_default_domain:<大家公司的域名,例如example.com> ldap_search_base:<LDAP基準搜索根分支點,例如ou=People,dc=example,dc=com> ldap_bind_dn:<LDAP管理員帳戶,例如cn=administrator,dc==example,dc=com> ldap_password:<LDAP管理員密碼> ldap_deref: never ldap_restart: yes ldap_scope: sub ldap_use_sasl: no ldap_start_tls: no ldap_version: 3 ldap_auth_method: bind ldap_mech: SSHA #(加密算法選取默認SSHA便可) ldap_filter:uid=%u #(這裏的含義是把LDAP相應分支下的記錄中uid參數做爲這裏的用戶名,%u是用戶帳戶的含義) ldap_password_attr:userPassword #(這裏的含義是把LDAP相應分支下的記錄中userPassword參數做爲這裏的驗證密碼) ldap_timeout: 10 ldap_cache_ttl: 30 ldap_cache_mem: 32786
三、在/etc/sasl2/下新增一個svn.conf文件:
#用戶驗證方法 pwcheck_method:saslauthd #用戶驗證信息怎麼傳輸 mech_list: plain login
四、在SVN對應的庫中conf目錄下svnserve.conf文件修改認證方式容許sasl認證便可:
svnserve.conf:
[sasl] use-sasl = true
五、重啓saslauthd、svn服務便可:
service saslauthd restart
chkconfig --level 3,5 on
(centos7的本身腦補:
仍是我給寫上吧...
systemctl restart saslauthd.service
systemctl enable saslauthd.service
)
svnserve -d -r /Your/SVN/RepoRootDir
六、驗證是否可以驗證成功:
testsaslauthd -u <%u還記得上面配置文件中的uid和%u嗎...> -p <passwd>
若是按老司機的套路走到這一步saslauthd已經言盡,能不能成功就看你LDAP配置了