1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
|
### Please describe the problem.
Syncing two standalones: amd64 and armel.
Sync works from armel to amd64.
Sync fails (missing git-upload-pack, git-receive-pack) from amd64 to armel.
### What steps will reproduce the problem?
git-annex sync :)
### What version of git-annex are you using? On what operating system?
git-annex version: 5.20131224-g6ca5271 on both
### Please provide any additional information below.
#### on server "rose" (amd64)
[[!format sh """
$ git-annex version
git-annex version: 5.20131224-g6ca5271
build flags: Assistant Webapp Pairing S3 WebDAV Inotify DBus XMPP Feeds Quvi TDFA
key/value backends: SHA256E SHA1E SHA512E SHA224E SHA384E SHA256 SHA1 SHA512 SHA224 SHA384 WORM URL
remote types: git gcrypt S3 bup directory rsync web webdav glacier hook
local repository version: 3
default repository version: 3
supported repository versions: 3 5
upgrade supported from repository versions: 0 1 2 4
$ git-annex sync
(merging synced/git-annex into git-annex...)
commit ok
pull synology
ash: git-upload-pack: not found
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
failed
push synology
ash: git-receive-pack: not found
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
Pushing to synology failed.
(non-fast-forward problems can be solved by setting receive.denyNonFastforwards to false in the remote\'s git config)
failed
git-annex: sync: 2 failed
$ cat .git/config
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
[branch "master"]
[annex]
uuid = c0e4106e-2631-11e2-9749-1bfa37a61069
version = 3
[remote "synology"]
url = greg@server:/volume1/photo/
fetch = +refs/heads/*:refs/remotes/synology/*
annex-ssh-options = "-i /home/greg/.ssh/annex.rose_rsa"
annex-uuid = ca735977-973c-44bc-9257-915b2c875e39
greg@rose:~/.ssh$ cat authorized_keys
command="/home/greg/.ssh/git-annex-shell" ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDT1yE96E/JQNPt0ziiNYJRvndCvLK4uG5h/SNYoAIBF1uH6L7VYAt3HWVqSyi3BcV70WDZ/yWgtNzbrcir46JpvEHMcvYaXLbANwoDGNjG/gsz7kP/8VUxZ6hG3P3ICuwnqVum5+rYXm6oj3xzWPfTRhhRoDZLOQdevSNpdGNaa/lSg8Vuq2suHwjQlQb8AIUuCZmS5cm6XwoUq/jJtN4LTuTPqMjzA6NkdhWM2Kigi9jPQBFborkYBPMphmZwBZiVnhsH1XpaOff+mP03D2gF/huC+b1vbWQstjuehUbY59rvJ4ijbOW8Uq2ep7dwLagmILtX5GbL+GS64pAn9sIP annex-DiskStation
greg@rose:~/.ssh$ cat git-annex-shell
#!/bin/sh
set -e
exec /home/greg/bin/git-annex.linux/runshell git-annex-shell -c "$SSH_ORIGINAL_COMMAND"
greg@rose:~/bin/git-annex.linux$ ls
bin gconvdir git-annex.MANIFEST git-core lib LICENSE README templates
etc git git-annex-shell git-receive-pack lib64 linker runshell usr
favicon.png git-annex git-annex-webapp git-upload-pack libdirs logo.svg shimmed
"""]]
#### on "synology" (armel)
[[!format sh """
/volume1/downloads/git-annex.linux $ ./runshell
$ git-annex version
git-annex version: 5.20131224-g6ca5271
build flags: Assistant Webapp Pairing Testsuite S3 WebDAV Inotify DBus XMPP DNS Feeds Quvi TDFA CryptoHash
key/value backends: SHA256E SHA1E SHA512E SHA224E SHA384E SKEIN256E SKEIN512E SHA256 SHA1 SHA512 SHA224 SHA384 SKEIN256 SKEIN512 WORM URL
remote types: git gcrypt S3 bup directory rsync web webdav glacier hook
local repository version: 5
default repository version: 3
supported repository versions: 3 5
upgrade supported from repository versions: 0 1 2 4
$ which git-receive-pack
/volume1/downloads/git-annex.linux/bin/git-receive-pack
$ which git-upload-pack
/volume1/downloads/git-annex.linux/bin/git-upload-pack
$ git-annex sync
commit (Recording state in git...)
ok
pull rose
From server:/home/greg/Media/Pictures/Photos
d761e6e..4454a51 git-annex -> rose/git-annex
c4f0719..a4c73e4 master -> rose/master
ok
push rose
Counting objects: 134, done.
Compressing objects: 100% (58/58), done.
Writing objects: 100% (58/58), 4.81 KiB | 0 bytes/s, done.
Total 58 (delta 38), reused 0 (delta 0)
warning: There are too many unreachable loose objects; run 'git prune' to remove them.
To greg@server:/home/greg/Media/Pictures/Photos
4454a51..812c393 git-annex -> synced/git-annex
ok
$ cat .git/config
[core]
repositoryformatversion = 0
filemode = true
bare = true
logallrefupdates = true
[branch "master"]
[annex]
uuid = ca735977-973c-44bc-9257-915b2c875e39
version = 5
direct = true
[remote "rose"]
url = greg@server:/home/greg/Media/Pictures/Photos
fetch = +refs/heads/*:refs/remotes/rose/*
annex-ssh-options = "-i /var/services/homes/greg/.ssh/annex_rsa"
annex-trustlevel = trusted
annex-uuid = c0e4106e-2631-11e2-9749-1bfa37a61069
$ cat /volume1/homes/greg/.ssh/authorized_keys
...partial...
command="/var/services/homes/greg/.ssh/git-annex-shell" ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCYvOZK2rO+3cF1wxxxrXptZ/QbRaOy36p9RtFmE5MKxgBRJ7n/8nMfBGaj3KDXcdJG+dTUsmLY5VeULuM4omtfJrF2MFYZDw2N0Qgq1bnYZ+q4OlpHfI3h77dAxyvM1MXYJvewXsjh8XoQJYqE8Pj4C05YsAJrqQJqqQqVZceD4TPvbKgnQhQIE2mCVXfItucJv0TOOBmKguOQGUB4Jp00IvFsnxpCLDeLFIODjRpXQqcMX9cZ9/6OYLznTck/MdbA5KTev1gVwiGwtYFGqY/DJ7q6zqfE+UU2aKS/M0r0Qjvr2+Q4+CuzVYc+hPURC8phmdP+HjtFcVsEcpsl6p79 annex-rose
/volume1/homes/greg/.ssh $ cd /volume1/homes/greg/.ssh/
/volume1/homes/greg/.ssh
/volume1/homes/greg/.ssh $ ls
annex_rsa authorized_keys id_rsa known_hosts
annex_rsa.pub git-annex-shell id_rsa.pub
/volume1/homes/greg/.ssh $ cd /var/services/homes/greg/.ssh/
/volume1/homes/greg/.ssh $ pwd
/var/services/homes/greg/.ssh
/volume1/homes/greg/.ssh $ cat git-annex-shell
#!/bin/sh
set -e
exec /volume1/downloads/git-annex.linux/runshell git-annex-shell -c "$SSH_ORIGINAL_COMMAND"
/volume1/downloads/git-annex.linux $ ls
LICENSE git-annex-shell linker
README git-annex-webapp logo.svg
bin git-annex.MANIFEST runshell
etc git-core shimmed
favicon.png git-receive-pack templates
gconvdir git-upload-pack usr
git lib
git-annex libdirs
"""]]
### After some debugging with Joey...
12:24 < joeyh> git does not use annex-ssh-options
12:24 < joeyh> the way the assistant sets this up is it makes up a new hostname, and in .ssh/config, makes that hostname use the real domain name, and the key
12:25 < joeyh> there's clearly a bug here.. the assistant only does that when there is no passwordless ssh key already set up. But in this wacky way of installing git and git-annex on a server, it needs to always do it
12:26 < joeyh> probably the assistant should probe if ssh server git-receive-pack works, and if not, always set up its special config
12:26 < joeyh> alternatively, the standalone tarball could have an actual installation step, rather than just being unpacked
Based on that I added (on the amd64/rose machine):
[[!format sh """
greg@rose:~/.ssh$ cat config
Host synology
HostName yep.org #obviously redacted
IdentityFile /home/greg/.ssh/annex.rose_rsa
$ git remote show -n synology
* remote synology
Fetch URL: greg@synology:/volume1/photo/
Push URL: greg@synology:/volume1/photo/
HEAD branch: (not queried)
Local ref configured for 'git push' (status not queried):
(matching) pushes to (matching)
"""]]
Now, to do a simple test with git:
[[!format sh """
$ git remote show synology
git-annex-shell: git-shell failed
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
"""]]
> [[done]]; `git push` and `git pull` don't use annex-ssh-options,
> and so that's not a good way to configure the dedicated key.
> Instead, set it up like the assistant does, with a dummy hostname in the
> url that is configured in .ssh/config to use the real domain and the
> dedicated key. --[[Joey]]
|