class Bard::Provision::SSH
move ssh port add to known hosts
Public Instance Methods
call()
click to toggle source
# File lib/bard/provision/ssh.rb, line 5 def call print "SSH:" if !ssh_available?(provision_server.ssh_uri, port: target_port) if !ssh_available?(provision_server.ssh_uri) raise "can't find SSH on port #{target_port} or #{provision_server.ssh_uri.port || 22}" end if !ssh_known_host?(provision_server.ssh_uri) print " Adding known host," add_ssh_known_host!(provision_server.ssh_uri) end print " Reconfiguring port to #{target_port}," provision_server.run! %(echo "Port #{target_port}" | sudo tee /etc/ssh/sshd_config.d/port_#{target_port}.conf; sudo service ssh restart), home: true end if !ssh_known_host?(provision_server.ssh_uri) print " Adding known host," add_ssh_known_host!(provision_server.ssh_uri) end # provision with new target port from now on ssh_url.gsub!(/:\d+$/, "") ssh_url << ":#{target_port}" puts " ✓" end
Private Instance Methods
add_ssh_known_host!(ssh_uri)
click to toggle source
# File lib/bard/provision/ssh.rb, line 47 def add_ssh_known_host! ssh_uri port ||= ssh_uri.port || 22 system "ssh-keyscan -p#{port} -H #{ssh_uri.host} >> ~/.ssh/known_hosts 2>/dev/null" end
ssh_available?(ssh_uri, port: nil)
click to toggle source
# File lib/bard/provision/ssh.rb, line 37 def ssh_available? ssh_uri, port: nil port ||= ssh_uri.port || 22 system "nc -zv #{ssh_uri.host} #{port} 2>/dev/null" end
ssh_known_host?(ssh_uri)
click to toggle source
# File lib/bard/provision/ssh.rb, line 42 def ssh_known_host? ssh_uri port ||= ssh_uri.port || 22 system "grep -q \"$(ssh-keyscan -t ed25519 -p#{port} #{ssh_uri.host} 2>/dev/null | cut -d ' ' -f 2-3)\" ~/.ssh/known_hosts" end
target_port()
click to toggle source
# File lib/bard/provision/ssh.rb, line 33 def target_port server.ssh_uri.port || 22 end