vagrant-multi-putty 1.4.1 → 1.4.2
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/README.md +21 -13
- data/lib/vagrant-multi-putty/command.rb +11 -8
- data/lib/vagrant-multi-putty/version.rb +1 -1
- metadata +3 -3
data/README.md
CHANGED
@@ -36,33 +36,41 @@ or convert a private key of your own.
|
|
36
36
|
4. Answer yes when prompted to save without a password.
|
37
37
|
5. Save the key using the filename of "insecure_private_key.ppk".
|
38
38
|
|
39
|
-
|
40
|
-
you need to convert the insecure_private_key and store it
|
41
|
-
extension. The vagrant-multi-putty plugin appends this
|
39
|
+
If you do not explicity set the `config.putty.private_key_path`
|
40
|
+
variable, you need to convert the insecure_private_key and store it
|
41
|
+
with a ".ppk" extension. The vagrant-multi-putty plugin appends this
|
42
|
+
extension automatically.
|
43
|
+
|
44
|
+
As of Vagrant 1.4.0, the `config.ssh.private_key_path` variable is converted into
|
45
|
+
an array. This allows multiple SSH keys to be passed to ssh. PuTTY does not
|
46
|
+
allow for a list of ssh keys via the command line. Therefore, if the
|
47
|
+
`config.putty.private_key_path` variable is not set, we attempt to use the first
|
48
|
+
key in the `config.ssh.private_key_path` list and append the '.ppk' extension
|
49
|
+
to it.
|
42
50
|
|
43
51
|
## Configuration
|
44
52
|
Most of the ssh configuration options used to control vagrant ssh also
|
45
53
|
control vagrant-multi-putty. The following Vagrantfile options are NOT used by
|
46
54
|
vagrant-multi-putty:
|
47
55
|
|
48
|
-
* config.ssh.max_tries
|
49
|
-
* config.ssh.timeout
|
50
|
-
* config.ssh.private_key_path
|
51
|
-
* config.ssh.shell
|
56
|
+
* `config.ssh.max_tries`
|
57
|
+
* `config.ssh.timeout`
|
58
|
+
* `config.ssh.private_key_path`
|
59
|
+
* `config.ssh.shell`
|
52
60
|
|
53
61
|
All other config.ssh options should work for vagrant-multi-putty just like they
|
54
62
|
do for vagrant ssh.
|
55
63
|
|
56
64
|
There are currently a few additional configuration parameters available:
|
57
65
|
|
58
|
-
* config.putty.username
|
59
|
-
|
60
|
-
* config.putty.private_key_path
|
66
|
+
* `config.putty.username`: Overrides the username set with
|
67
|
+
` config.ssh.username`.
|
68
|
+
* `config.putty.private_key_path`: Used to explicity set the path to the
|
61
69
|
private key variable.
|
62
|
-
* config.putty.modal
|
70
|
+
* `config.putty.modal`: change vagrant-multi-putty to use modal window mode.
|
63
71
|
Execute putty and block the terminal until all putty processes have exited.
|
64
|
-
Can be set on the command line with
|
65
|
-
* config.putty.after_modal
|
72
|
+
Can be set on the command line with `-m` or `--modal`. This is false by default.
|
73
|
+
* `config.putty.after_modal`: Configure a post hook block that will be called
|
66
74
|
once all child putty processes have exited and modal mode is enabled. The
|
67
75
|
default block is empty.
|
68
76
|
|
@@ -5,7 +5,8 @@ require 'optparse'
|
|
5
5
|
module VagrantMultiPutty
|
6
6
|
class Command < Vagrant.plugin(2, :command)
|
7
7
|
def execute
|
8
|
-
options = {:modal => @env.config_global.putty.modal
|
8
|
+
options = {:modal => @env.config_global.putty.modal,
|
9
|
+
:plain_auth => false }
|
9
10
|
opts = OptionParser.new do |opts|
|
10
11
|
opts.banner = "Usage: vagrant putty [vm-name...] [-- extra putty args]"
|
11
12
|
|
@@ -56,25 +57,27 @@ module VagrantMultiPutty
|
|
56
57
|
# If ssh_info is nil, the machine is not ready for ssh.
|
57
58
|
raise Vagrant::Errors::SSHNotReady if ssh_info.nil?
|
58
59
|
|
59
|
-
# The config.putty directive overrides the config.ssh private_key_path directive.
|
60
|
-
private_key = vm.config.putty.private_key_path || "#{ssh_info[:private_key_path]}.ppk"
|
61
|
-
pk_path = File.expand_path("#{private_key}", vm.env.root_path)
|
62
|
-
@logger.debug("Putty Private Key: #{pk_path}")
|
63
|
-
|
64
60
|
# Load options from machine ssh_info.
|
65
61
|
ssh_options = [ssh_info[:host]]
|
66
62
|
# config.putty.username overrides the machines ssh_info username.
|
67
63
|
ssh_options += ["-l", vm.config.putty.username || ssh_info[:username]]
|
68
64
|
ssh_options += ["-P", ssh_info[:port].to_s]
|
69
|
-
ssh_options += ["-i", pk_path] unless options[:plain_auth]
|
70
65
|
ssh_options += ["-X"] if ssh_info[:forward_x11]
|
71
66
|
ssh_options += ["-A"] if ssh_info[:forward_agent]
|
72
67
|
|
68
|
+
# Putty only allows one ssh key to be passed with the -i option
|
69
|
+
# so we default to choosing the first default key if it is not
|
70
|
+
# explicitly set.
|
71
|
+
private_key = vm.config.putty.private_key_path ||
|
72
|
+
ssh_info[:private_key_path][0] + ".ppk"
|
73
|
+
@logger.debug("Putty Private Keys: #{private_key.to_s}")
|
74
|
+
ssh_options += ["-i", private_key] unless options[:plain_auth]
|
75
|
+
|
73
76
|
# Add in additional args from the command line.
|
74
77
|
ssh_options.concat(args) if !args.nil?
|
75
78
|
|
76
79
|
# Spawn putty and detach it so we can move on.
|
77
|
-
@logger.debug("Putty cmd line options: #{
|
80
|
+
@logger.debug("Putty cmd line options: #{ssh_options.to_s}")
|
78
81
|
pid = spawn("putty", *ssh_options)
|
79
82
|
@logger.debug("Putty Child Pid: #{pid}")
|
80
83
|
Process.detach(pid)
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: vagrant-multi-putty
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.4.
|
4
|
+
version: 1.4.2
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-
|
12
|
+
date: 2013-12-14 00:00:00.000000000 Z
|
13
13
|
dependencies: []
|
14
14
|
description: Vagrant plugin to allow VM ssh with PuTTY (multi-vm supported)
|
15
15
|
email:
|
@@ -44,7 +44,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
44
44
|
version: '0'
|
45
45
|
segments:
|
46
46
|
- 0
|
47
|
-
hash:
|
47
|
+
hash: -4207126925764807584
|
48
48
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
49
49
|
none: false
|
50
50
|
requirements:
|