-R [bind_address:]port:host:hostport
ssh -R *:8080:localhost:80 -N root@website.com
or
ssh -R 0.0.0.0:8080:localhost:80 -N root@website.com
or
ssh -R [::]:8080:localhost:80 -N root@website.com
Note that if you use OpenSSH sshd server, the server's GatewayPorts option needs to be enabled (set to yes or clientspecified) for this to work (check file /etc/ssh/sshd_config on the server). Otherwise (default value for this option is no), the server will always force port bound on the loopback interface only.
errs = []
def test_server(errs, server)
lambda do |options|
begin
server =~ /(.+)@(.+)/
server_name, user = $2, $1
puts server_name
s = Net::SSH.start(server_name, user)
s.close
s = server
rescue Errno::EHOSTUNREACH, SocketError
puts "echec connexion #{server} : #{$!}"
errs << server
s = nil
end
return s
end
end
Net::SSH::Multi.start(:on_error => :warn) do |session|
session.use &test_server(errs, 'root@srv-04')
session.use &test_server(errs, 'root@srv-07')
session.use &test_server(errs, 'root@srv-08')
session.use &test_server(errs, 'root@fail-08.local')
session.exec( "hostname" )
session.loop
end
unless errs.empty?
puts "The command failed on #{errs.size} hosts"
end
Dans les logs d'accès ssh (/var/log/auth.log), si vous avez passé le loglevel de SSH à VERBOSE, vous pouvez voir pour chaque accès la clé qui a été utilisé.
Le format est différent de celui dans authorized_keys pour des raisons de lisibilité j'imagine.. Pour faire la conversion depuis authorized_keys vers ce format :
echo key | base64 | md5
ou
ssh-keygen -lf key.pub
Trouver tous les pid des sessions ssh en cours :
ss -tnp|grep ':22'
ss -tp|grep ':22'|grep -Eo ',[0-9]+,'|grep -Eo '[0-9]+'
Trouver depuis quand ces process sont démarrés :
26205 329840
1419103787
Sat Dec 20 20:31:42 CET 2014
One liner :
start time
for pid in $(ss -tp|grep ':22'|grep -Eo ',[0-9]+,'|grep -Eo '[0-9]+'); do date -d@$(echo "$(date +%s) - $(ps -o etimes -p $pid --no-headers)"|bc); done
pid + start time
Si le log level de ssh est en VERBOSE, on peut chercher dans auth.log le fingerprint de la clé publique correspondant à la date à laquelle une session ssh a démarré :
Je préfère cette solution, à savoir passer sshd en VERBOSE.
L'autre solution consiste à utiliser environment dans le fichier authorized_keys puis à écrire dans un fichier (à l'aide de .bashrc par exemple). Mais l'utilisateur peut modifier ce fichier..
ssh-keygen -lf /path/to/public_key_file
wow could be useful
via skunnyk
petit rappel
cheatsheet bien faite
Bon ce code n'a pas marché chez moi... mais il faut bien garder en tête qu'une clé chargée avec un agent va résider en mémoire de manière non chiffrée ;)
Et de la même manière, elle va résider en mémoire sur un hôte distant si on se connecte en 'ssh -A'. Donc potentiellement, quelqu'un qui a un accès root sur cette machine distante peut récupérer les clés privés des gens qui s'y connectent (en -A)
github link via skunnyk
Quelques pistes pour monitorer le TCPforwarding