web-dev-qa-db-ja.com

コマンドラインでSVNにSSHパスワードを提供するにはどうすればよいですか?

私の場合、SVNチェックアウトを実行したいと思います。

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

ただし、パスワードがポップアップしないように、その1行にパスワードを入れたいと思います。

8
Alex

svn co svn + ssh:// username:[email protected]/home/svn/shproject

12
Marius

SSHを使用している場合、承認に公開鍵を使用することをお勧めします。これにより、パスワードの必要性が完全になくなります。

キーの作成とインストールのガイドは ここ にあります。

16
abyx

無限に良いのは、キーペアを生成することです。ローカルユーザーとして:

$ ssh-keygen -t rsa

(すべてのデフォルトを受け入れる)

次に、.ssh/id_rsa.pubの内容を取得し、リモートサーバーの.ssh/authorized_keysに追加します。すべて同じ行に貼り付けられていることを確認してください。また、.sshディレクトリのアクセス許可が600であることを確認してください。

そうすれば、パスワードの入力を求められることなくsshを実行できるはずです。

7
Micah Yoder

パスワードを使用する代わりに、秘密鍵と公開鍵のペアを調べて、sshにそれを使用させることをお勧めします。ほとんどのLinuxディストリビューションには、このようなペアを作成するための使いやすいコマンドが付属しています。ただし、これには、サーバー側から(1回)アクセスして、公開鍵ファイルをユーザーの〜/ .ssh/authorized_keysファイルに保管する必要があります。

6

ええと、私は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.

まあ、少なくとも私は最終的に私のために働く解決策を見つけてうれしいです-これが他の誰かにも役立つことを願っています、
乾杯!

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

これを取得するには、 sshpass (Linuxの場合)を使用するのが最善の方法だと思います。

Sshpassをインストールします

$ Sudo apt-get install sshpass

一時的な環境変数を設定します

$ export SSHPASS=*yourpass*

Svn設定ファイルを編集します

$ nano ~/.Subversion/config

最後にコメントアウトaddsshpass -esshコマンドの前のssh行

ssh = $SVN_SSH sshpass -e ssh -q -o ControlMaster=no
1
Francesco

指定されたスイッチユーザー名およびパスワードを使用することもできます。

コマンドライン認証 を参照してください。

1
CSchulz