rye 0.4 → 0.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/CHANGES.txt +7 -0
- data/bin/rye +13 -8
- data/lib/rye/box.rb +6 -6
- data/lib/rye/cmd.rb +1 -1
- data/rye.gemspec +1 -1
- metadata +1 -1
data/CHANGES.txt
CHANGED
@@ -5,6 +5,13 @@ TODO
|
|
5
5
|
* Fingerprints: ssh-keygen -l -f id_rsa_repos.pub
|
6
6
|
|
7
7
|
|
8
|
+
#### 0.4.1 (2009-04-06) #############################
|
9
|
+
|
10
|
+
* FIXED: Rye::Box.authorize_keys was not disabling safe mode properly
|
11
|
+
* ADDED: "rye authorize" now specifically enforces the auth method order
|
12
|
+
* FIXED: Disabled debug mode.
|
13
|
+
|
14
|
+
|
8
15
|
#### 0.4.0 (2009-04-06) #############################
|
9
16
|
|
10
17
|
* ADDED: to_s and inspect methods for cleaner debugging output
|
data/bin/rye
CHANGED
@@ -41,15 +41,16 @@ command :authorize do |obj|
|
|
41
41
|
|
42
42
|
highline = HighLine.new # Used for password prompt
|
43
43
|
|
44
|
-
opts = { :debug => nil }
|
44
|
+
opts = { :debug => nil, :auth_methods => %w(publickey hostbased) }
|
45
45
|
opts[:user] = obj.option.user if obj.option.user
|
46
46
|
|
47
47
|
obj.argv.each do |hostname|
|
48
|
-
|
48
|
+
|
49
49
|
|
50
50
|
retried = 0
|
51
51
|
begin
|
52
52
|
rbox = Rye::Box.new(hostname, opts).connect
|
53
|
+
puts "Authorizing #{rbox.opts[:user]}@#{hostname}" if retried == 0
|
53
54
|
|
54
55
|
# We know we're already authorized b/c we didn't have to give a password
|
55
56
|
if retried == 0
|
@@ -61,12 +62,16 @@ command :authorize do |obj|
|
|
61
62
|
# An authentication failure means either the requested user doesn't
|
62
63
|
# exist on the remote machine or we need to supply a password.
|
63
64
|
rescue Net::SSH::AuthenticationFailed => ex
|
65
|
+
STDERR.puts
|
64
66
|
retried += 1
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
67
|
+
if retried <= 3
|
68
|
+
#opts[:password] = highline.ask("Password: ") { |q| q.echo = '' }
|
69
|
+
opts[:auth_methods] = %w(password keyboard-interactive)
|
70
|
+
retry
|
71
|
+
else
|
72
|
+
STDERR.puts "Authentication failed."
|
73
|
+
exit 1
|
74
|
+
end
|
70
75
|
end
|
71
76
|
|
72
77
|
puts "Added public keys for: ", rbox.authorize_keys
|
@@ -117,7 +122,7 @@ command_alias :pubkeys, :pubkey
|
|
117
122
|
|
118
123
|
|
119
124
|
default :keys
|
120
|
-
debug :
|
125
|
+
debug :off
|
121
126
|
|
122
127
|
# We can Drydock specifically otherwise it will run at_exit. Rye also
|
123
128
|
# uses at_exit for shutting down the ssh-agent. Ruby executes at_exit
|
data/lib/rye/box.rb
CHANGED
@@ -197,18 +197,18 @@ module Rye
|
|
197
197
|
#
|
198
198
|
def authorize_keys
|
199
199
|
added_keys = []
|
200
|
-
|
200
|
+
@safe= false
|
201
201
|
Rye.keys.each do |key|
|
202
202
|
path = key[2]
|
203
203
|
debug "# Public key for #{path}"
|
204
204
|
k = Rye::Key.from_file(path).public_key.to_ssh2
|
205
|
-
self.mkdir('-p', '
|
206
|
-
self.echo("'#{k}' >>
|
207
|
-
self.echo("'#{k}' >>
|
208
|
-
self.chmod('-R', '0600', '
|
205
|
+
self.mkdir('-p', '$HOME/.ssh') # Silently create dir if it doesn't exist
|
206
|
+
self.echo("'#{k}' >> $HOME/.ssh/authorized_keys")
|
207
|
+
self.echo("'#{k}' >> $HOME/.ssh/authorized_keys2")
|
208
|
+
self.chmod('-R', '0600', '$HOME/.ssh/authorized_keys*')
|
209
209
|
added_keys << path
|
210
210
|
end
|
211
|
-
|
211
|
+
@safe = true
|
212
212
|
added_keys
|
213
213
|
end
|
214
214
|
|
data/lib/rye/cmd.rb
CHANGED
@@ -50,7 +50,7 @@ module Rye;
|
|
50
50
|
def mkdir(*args); cmd('mkdir', args); end
|
51
51
|
def touch(*args); cmd('touch', args); end
|
52
52
|
def uname(*args); cmd('uname', args); end
|
53
|
-
def chmod(*args); cmd('
|
53
|
+
def chmod(*args); cmd('chmod', args); end
|
54
54
|
|
55
55
|
def uptime; cmd("uptime"); end
|
56
56
|
def python(*args); cmd('python', args); end
|
data/rye.gemspec
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
@spec = Gem::Specification.new do |s|
|
2
2
|
s.name = "rye"
|
3
3
|
s.rubyforge_project = "rye"
|
4
|
-
s.version = "0.4"
|
4
|
+
s.version = "0.4.1"
|
5
5
|
s.summary = "Rye: Run system commands via SSH locally and remotely in a Ruby way."
|
6
6
|
s.description = s.summary
|
7
7
|
s.author = "Delano Mandelbaum"
|