主にプログラミング関連のメモ帳 ♪(✿╹ヮ╹)ノ
書いてあるコードは自己責任でご自由にどうぞ。記事本文の無断転載は禁止です。
2016/08/24
rugged を使って、 Git を使ったアプリケーションを作っている時にハマったことをメモしてます。
下のような感じで、リポジトリを clone しようとすると怒られます。
credential = Rugged::Credentials::SshKey.new(publickey: 'id_rsa.pub', privatekey: 'id_rsa', username: 'mika-f', passphrase: 'cat')
Rugged::Repository.clone_at('git@github.com:mika-f/Test.git', Dir.mktmpdir, credentials: credential)
# => Rugged::SshError: username does not match previous request
# from (pry):19:in `clone_at'
SSH キーもユーザーも合ってるじゃん!って思ってたのですが、 Rugged::Credentials::SshKey
の username
は、
SSH キー所有者のユーザー名じゃくて、ホスト側っぽい。
ということで、下のように修正すれば OK
credential = Rugged::Credentials::SshKey.new(publickey: 'id_rsa.pub', privatekey: 'id_rsa', username: 'git', passphrase: 'cat')
Rugged::Repository.clone_at('git@github.com:mika-f/Test.git', Dir.mktmpdir, credentials: credential)
これは、単純に使った SSH キーの問題でした。
Rugged.features
とすることで、対応しているものが表示できるのですが、
Rugged.features
# => [:threads, :https]
となって、 SSH 対応してないよーってことになりました。
そのときは、 libssh2-devel
を入れたら SSH も対応しました。
軽く使ってみて、ハマったのはこの辺。
ではでは。