私の場合、SVNチェックアウトを実行したいと思います。
svn co svn+ssh://10.106.191.164/home/svn/shproject
ただし、パスワードがポップアップしないように、その1行にパスワードを入れたいと思います。
svn co svn + ssh:// username:[email protected]/home/svn/shproject
SSHを使用している場合、承認に公開鍵を使用することをお勧めします。これにより、パスワードの必要性が完全になくなります。
キーの作成とインストールのガイドは ここ にあります。
無限に良いのは、キーペアを生成することです。ローカルユーザーとして:
$ ssh-keygen -t rsa
(すべてのデフォルトを受け入れる)
次に、.ssh/id_rsa.pubの内容を取得し、リモートサーバーの.ssh/authorized_keysに追加します。すべて同じ行に貼り付けられていることを確認してください。また、.sshディレクトリのアクセス許可が600であることを確認してください。
そうすれば、パスワードの入力を求められることなくsshを実行できるはずです。
パスワードを使用する代わりに、秘密鍵と公開鍵のペアを調べて、sshにそれを使用させることをお勧めします。ほとんどのLinuxディストリビューションには、このようなペアを作成するための使いやすいコマンドが付属しています。ただし、これには、サーバー側から(1回)アクセスして、公開鍵ファイルをユーザーの〜/ .ssh/authorized_keysファイルに保管する必要があります。
ええと、私はdoパスワードを入力したい-パスワードがどこかに保存されていることに頼るのは好きではありません。ただし、入力したいのですがonce svn + sshコマンドのセットごと。多くの場合、1つのsvn checkout
を実行したいだけで、とにかく大量のパスワードを入力する必要があります。そのような場合、パスワードを一度だけ入力したいと思います。
したがって、 @ 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 [email protected]? ' PASS
ssh [email protected]? [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:[email protected]
myself:[email protected]'s password: ^C
# svn - with just username, as expected:
$ svn co svn+ssh://[email protected]/tmp/myrepo myrepo-wc
[email protected]'s password: ^C
svn: Network connection closed unexpectedly
# svn - with password added to URL, asks for password anyway:
$ svn co svn+ssh://myself:[email protected]/tmp/myrepo myrepo-wc
myself:[email protected]'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://[email protected]/tmp/myrepo --non-interactive --trust-server-cert --username myself --password $PASS --no-auth-cache
[email protected]'s password: ^C
svn: Network connection closed unexpectedly
svn
コマンドラインの--username/--password
に関する限り、ssh
ではなくsvn
が要求するため、svn+ssh
は関係ありません。
svn-"-password"および "--username"オプションを無視するSubversion-スタックオーバーフロー
表示されるプロンプトは、Subversionがパスワードを要求しているようには見えません。sshがパスワードを要求しているように見えます。
さらに、ログが示すように、ssh
自体はURLで「username:password@...
」を受け入れません-したがって、svn
も受け入れません。 svn
のURLでユーザー名のみを使用できる理由は、おそらく~/.Subversion/config
で説明されています。
###(URLにユーザー名が含まれている場合、ホスト名は次のようになります
### @としてトンネルエージェントに渡されます。)
注意nothingは<user>:<pass>@<hostname>
について述べられています。
さて、ページ DebianでのSVN + SSHを介したSubversion のおかげで、(おそらく)sshトンネルのSVN_SSH
で使用される~/.Subversion/config
環境変数があることにようやく気づきました。そしてそれは最終的にプログラムを使用する可能性を開きます sshpass
そのような一方向の方法でパスワードを処理します:
$ SSHPASS=$PASS SVN_SSH="sshpass -e ssh" svn co svn+ssh://[email protected]/tmp/myrepo myrepo-wc
Checked out revision 0.
まあ、少なくとも私は最終的に私のために働く解決策を見つけてうれしいです-これが他の誰かにも役立つことを願っています、
乾杯!
svn co svn+ssh://10.106.191.164/home/svn/shproject --non-interactive --trust-server-cert --username <username> --password <password> --no-auth-cache
これを取得するには、 sshpass (Linuxの場合)を使用するのが最善の方法だと思います。
Sshpassをインストールします
$ Sudo apt-get install sshpass
一時的な環境変数を設定します
$ export SSHPASS=*yourpass*
Svn設定ファイルを編集します
$ nano ~/.Subversion/config
最後にコメントアウトaddsshpass -e
ssh
コマンドの前のssh行
ssh = $SVN_SSH sshpass -e ssh -q -o ControlMaster=no
指定されたスイッチユーザー名およびパスワードを使用することもできます。
コマンドライン認証 を参照してください。