명령 행에서 SVN에 SSH 비밀번호를 제공하려면 어떻게해야합니까?


8

내 경우에는 SVN 체크 아웃을하고 싶습니다.

svn co svn+ssh://10.106.191.164/home/svn/shproject

그러나 암호가 표시되지 않도록 한 줄에 암호를 갖고 싶습니다.


1
간단한 경고-사용자 이름과 비밀번호가 해당 컴퓨터에 액세스 할 수있는 모든 사용자에게 노출됩니다. 간단한 "ps -elf"명령만으로 전체 명령 행이 표시됩니다. 일반적으로 이것은 보안 측면에서 좋은 생각이 아니며 svn 및 도구와 같은 도구가 암호를 묻는 이유입니다. 시스템에 액세스 할 수있는 사람을 제어하는 ​​경우이를 수행 할 수 없으며 사람들이 일반적으로이 작업을 수행해야한다고 생각하지 않도록하십시오.
Jared

답변:


12

svn co svn + ssh : // username : password@10.106.191.164/home/svn/shproject


질문에 답변하고 대안을 제공하는 것이 아니라 +1합니다 (그럴 수도 있음).
briealeida

@ briealeida-나는 그것이 효과가 있었으면 좋겠다 : 아래게시물 의 테스트에 따르면 암호 프롬프트가 나타나면서 작동하지 않는 것 같습니다. 같은 게시물에는 sshpass(나에게 도움이되는) 솔루션이 포함되어 있습니다 .
sdaau

위에서 말했듯이 이것은 실제로 작동하지 않습니다.
Jonny

확장 : ssh가 암호를 요구하지 않는 한 대부분의 경우 작동합니다.
Jonny

16

SSH를 사용하는 경우 권한 부여를 위해 공개 키를 사용하여 암호의 필요성을 완전히 줄이는 것이 좋습니다.

키 생성 및 설치에 대한 지침은 여기를 참조하십시오 .


물론 키를 안전하게 보호하려면 암호를 입력해야합니다. : /
Rob

7

키 페어를 생성하는 것이 무한히 좋습니다. 로컬 사용자로서 :

$ ssh-keygen -t rsa

(모든 기본값을 수락하십시오)

그런 다음 .ssh / id_rsa.pub의 컨텐츠를 가져 와서 원격 서버에서 .ssh / authorized_keys에 추가하십시오. 모두 동일한 행에 붙여 넣어야합니다. 또한 .ssh 디렉토리의 권한이 600인지 확인하십시오.

그런 다음 암호를 묻지 않고 ssh를 수행 할 수 있어야합니다.


"서버에서 ~ / .ssh의 권한은 700이어야합니다. 서버에서 ~ / .ssh / authorized_keys 파일의 모드는 600입니다. 클라이언트 측의 (개인) 키의 권한 600이어야합니다. " askubuntu.com/a/46425
Jonny

6

암호를 사용하는 대신 개인 / 공개 키 쌍을보고 ssh에서이를 사용하려고 할 수 있습니다. 대부분의 Linux 배포판에는 이러한 쌍을 만들기위한 명령을 사용하기 쉬운 것이 포함되어 있습니다. 그러나 이것은 사용자의 ~ / .ssh / authorized_keys 파일에 공개 키 파일을 저장하기 위해 서버 측 (한 번)에 액세스해야합니다.


3

글쎄, 난 암호를 입력합니다 - 내가하지 어딘가에 저장되는 비밀번호에 의존 좋아한다; 그러나 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/--passwordsvn관한 한 명령 행 - 함께 문제가되지 않는 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.

글쎄, 적어도 나는 나에게 맞는 해결책을 마침내 찾아서 기쁘다. 이것이 다른 누군가에게도 도움이되기를 바란다
.


2
svn co svn+ssh://10.106.191.164/home/svn/shproject --non-interactive --trust-server-cert --username <username> --password <password> --no-auth-cache


1

sshpass (Linux)를 사용하는 것이 이것을 얻는 가장 좋은 방법 이라고 생각 합니다.

sshpass 설치

$ sudo apt-get install sshpass

임시 환경 변수 설정

$ export SSHPASS=*yourpass*

svn 구성 파일 편집

$ nano ~/.subversion/config

마지막으로 명령 sshpass -e전에 ssh 행에 add 를 주석 처리하십시오.ssh

ssh = $SVN_SSH sshpass -e ssh -q -o ControlMaster=no
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.