내 경우에는 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 : // username : password@10.106.191.164/home/svn/shproject
SSH를 사용하는 경우 권한 부여를 위해 공개 키를 사용하여 암호의 필요성을 완전히 줄이는 것이 좋습니다.
키 생성 및 설치에 대한 지침은 여기를 참조하십시오 .
키 페어를 생성하는 것이 무한히 좋습니다. 로컬 사용자로서 :
$ ssh-keygen -t rsa
(모든 기본값을 수락하십시오)
그런 다음 .ssh / id_rsa.pub의 컨텐츠를 가져 와서 원격 서버에서 .ssh / authorized_keys에 추가하십시오. 모두 동일한 행에 붙여 넣어야합니다. 또한 .ssh 디렉토리의 권한이 600인지 확인하십시오.
그런 다음 암호를 묻지 않고 ssh를 수행 할 수 있어야합니다.
글쎄, 난 할 암호를 입력합니다 - 내가하지 어딘가에 저장되는 비밀번호에 의존 좋아한다; 그러나 svn + ssh 명령 세트마다 한 번씩 입력하고 싶습니다 . 그리고 종종, 당신은 단지 하나를하고 싶고 svn checkout
-어쨌든 많은 암호를 입력해야합니다. 그런 경우 암호를 한 번만 입력하고 싶습니다.
따라서 @Boinst 와 @Marius의 답변 만 내 유스 케이스와 관련이있었습니다. 불행히도 그들은 내가 일할 수 없어서 도움이되지 않았습니다. 포스트 작성자가 명령을 게시하기 전에 명령을 시도했는지 궁금합니다. 지금은 어떻게 작동하는지 상상할 수 없습니다 .Ubuntu 10.04 PC에서 로컬로 수행 한 테스트가 있습니다. 비밀번호 프롬프트가 나타납니다) :
$ 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
표시되는 프롬프트는 Subversion이 암호를 요구하는 것처럼 보이지 않으며 ssh가 암호를 요구하는 것처럼 보입니다.
또한 로그에 표시된 것처럼 ssh
자체적으로 username:password@...
URL에서 " "를 허용 하지 않습니다 svn
. 의 URL에서 사용자 이름 만 사용할 수있는 이유는 svn
다음에 설명되어 있습니다 ~/.subversion/config
.
### (URL에 사용자 이름이 포함 된 경우 호스트 이름은
###이 터널 에이전트에 @로 전달됩니다.)
에 대해서는 아무 것도 언급 되지 않았습니다<user>:<pass>@<hostname>
.
이제 데비안의 SVN + SSH를 통한 Subversion 페이지 덕분에 ssh 터널에 SVN_SSH
사용 된 환경 변수 가 있다는 것을 깨달았습니다 ~/.subversion/config
. 마지막으로 프로그램 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.
글쎄, 적어도 나는 나에게 맞는 해결책을 마침내 찾아서 기쁘다. 이것이 다른 누군가에게도 도움이되기를 바란다
.