私の場合、SVNチェックアウトを行いたいです。
svn co svn+ssh://10.106.191.164/home/svn/shproject
ただし、パスワードが1行に表示されるようにして、ポップアップしないようにします。
私の場合、SVNチェックアウトを行いたいです。
svn co svn+ssh://10.106.191.164/home/svn/shproject
ただし、パスワードが1行に表示されるようにして、ポップアップしないようにします。
回答:
svn co svn + ssh:// username:password@10.106.191.164/home/svn/shproject
sshpass
(これは私にとっては機能します)。
無限に良いのは、キーペアを生成することです。ローカルユーザーとして:
$ ssh-keygen -t rsa
(すべてのデフォルトを受け入れる)
次に、.ssh / id_rsa.pubの内容を取得し、リモートサーバーの.ssh / authorized_keysに追加します。すべてが同じ行に貼り付けられていることを確認してください。また、.sshディレクトリの権限が600であることを確認してください。
その後、パスワードの入力を求められることなくsshを実行できるはずです。
パスワードを使用する代わりに、秘密鍵と公開鍵のペアを確認し、sshにそれを使用させることができます。ほとんどのLinuxディストリビューションには、そのようなペアを作成するための使いやすいコマンドが付属しています。ただし、これには、ユーザーの〜/ .ssh / authorized_keysファイルに公開鍵ファイルを保管するために、サーバー側に(一度)アクセスする必要があります。
ええと、パスワードを入力したいのですが、どこかに保存されている自分のパスワードに依存したくありません。ただし、svn + sshコマンドのセットごとに1 回入力する必要があります。多くの場合、1つだけを実行したいのですが、svn checkout
とにかく大量のパスワードを入力する必要があります。このような場合、パスワードを1回だけ入力したいと思います。
したがって、@ Boinstと@Mariusによる回答のみが私のユースケースに関連していました。残念ながら、私は彼らを働かせることができなかったので、彼らは助けにはなりませんでした。投稿者自身が投稿する前にコマンドを試してみたかどうか、私は今それらがどのように機能するか想像できません-これは私がUbuntu 10.04 PCでローカルに行ったテストです(そして私が見るたびに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-「--password」および「--username」オプションを無視するSubversion-スタックオーバーフロー
表示されるプロンプトは、Subversionがパスワードを要求するようではなく、sshがパスワードを要求するように見えます。
さらに、ログが示すように、ssh
それ自体はusername:password@...
URLの「」を受け入れないため、どちらも受け入れませんsvn
。のURLでユーザ名だけを使用することが許容される理由svn
は、おそらく次のように説明されてい~/.subversion/config
ます。
###(URLにユーザー名が含まれている場合、ホスト名は
###としてトンネルエージェントに渡されます。)
何も言われていないことに注意してください<user>:<pass>@<hostname>
。
さて、Debianの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.
まあ、少なくとも私は最終的に私のために働く解決策を見つけてうれしいです-これが他の人にも役立つことを願って、
乾杯!
特定のスイッチのユーザー名とパスワードを使用することもできます。
コマンドライン認証を参照してください。