Blog

Meine Top-10 Fehler mit Linux Befehlen

Jemand der nie einen Fehler gemacht hat, hat nie etwas neues ausprobiert. – Albert Einstein. Hier sind ein paar der gravierensten Fehler die ich am Unix Promt gemacht habe. Einige der Fehler kosten mich eine längere Downtime des Server. Viele der Fehler sind aus frühen Linux Zeiten. No. 01: Befehl - userdel Die Datei /etc/deluser.conf war zum löschen des home Verzeichnisses und des Mail Spool des Users konfiguriert. Eigentlich wollte ich nur den User Account löschen und am Ende löschte ich alles (Info: -r war via deluser.conf aktiviert): userdel foo No. 02: Solaris Box Rebooted Unter Linux beendet der Befehl killall Prozesse. (killall httpd). Unter Solaris jedoch killt der Befehl jeden aktiven Prozess. Als Root User beendete ich jeden Prozess - und dies war unsere Haupt Oracle DB Box: killall process-name No. 03: Zerstörte named.conf Ich wollte eigentlich nur eine neue Zone zur /var/named/chroot/etc/named.conf Datei hinzufügen, aber es endete anderst: ./mkzone example.com > /var/named/chroot/etc/named.conf No. 04: Zerstörten von Arbeits Backups mit Tar und Rsync (Private Backups) Ich hatte nur eine Backup Kopie meines OT Projektes gemacht und wollte eigentlich nur ein Verzeichnis finden, das functions hies. Es endete damit das ich sämtliche Sicherungen gelöscht habe… (Info: -c switch anstatt von -x):

Continue reading

Manuelles Anlegen einer MySQL Datenbank unter Linux

1. Datenbank erzeugen Befehl eingeben für das Anlegen einer neuen Datenbank (Befehl für den mysqladmin) der Benutzer ist dabei -u root und ich möchte das ich nach einem Passwort gefragt werde -p deswegen das Passwort leerlassen. Mit create DATENBANK-NAME wird angegeben das eine Datenbank erstellt werden soll. Linux:~# mysqladmin -u root -p create DATENBANK Nach Drücken der ENTER-Taste werde ich nach einem Passwort gefragt. Hier nun ein neues Passwort eingeben. Nach erneutem Drücken der ENTER-Taste wird die DB im Hintergrund erstellt. Enter password: 2. Datenbankbenutzer anlegen Zunächst melde ich mich an der Datenbank an mit dem User root und seinem Password. Linux:~# mysql -u root -p Enter password: Welcome to the MySQL monitor. Commands end with ; or g. Nun bin ich direkt an meiner Datenbank angemeldet und kann mit SQL Befehlen direkt Einstellungen vornehmen. Im nächsten Schritt gebe ich den Befehl ein: mit grant all privileges on DATENBANK.* gebe ich die Rechte für die Dabenbank an den Benutzer: BENUTZER-DB Der Benutzer greift über den localhost auf die Datbenbank zu und soll sich identifizieren über ein Passwort: my-PASSWORD Mit einem ; und drücken der ENTER-Taste schließe ich die MySQL Abfrage ab. mysql> grant all privileges on DATENBANK.* to BENUTZER-DB@localhost identified by 'my-PASSWORD'; Nach drücken der ENTER-Taste sollte mir das Anlegen ohne eine Fehlermeldung bestätigt werden:

Continue reading

Key-basierte SSH Logins auf Linux Server mit PuTTY

Dieses HowTo erklärt, wie man ein private/public Key Paar mit Putty generiert und verwendet um sich auf einem entfernten Server mit SSH unter Benutzung des Programmes PuTTY einzuloggen. PuTTY ist ein SSH Client Programm, das es für Windows- als auch für Linux-Systeme zum herunterladen gibt . Mit Key-basierte SSH Logins kann der standartmässige Benutzername / Passwort Login Vorgang auf einem Linux Server deaktiviert werden, was bedeutet, dass sich nur User mit einem gültigen private / public Key Paar anmelden können. Dadurch ist der Server besser vor brute-force Attacken geschützt. Arbeitsschritte: Installation von PuTTY, PuTTYgen und Pageant auf Windows Profil mit Einstellungen für den Server 192.168.2.1 anlegen Mit dem SSH Linux Server connecten Ein privates/öffentliches Key Paar mit PuTTY Key Generator erstellen Den Public Key auf dem Linux Server speichern Einbinden des Private Key an das PuTTY Profil Erster Key-basierter Login auf Linux Server Username/Passwort Logins auf Linux Server deaktivieren Pageant Key Passwort speichern 1.) Installation von PuTTY, PuTTYgen und Pageant auf Windows Zuerst müssen die Programme auf dem Windows Rechner installiert werden. Dazu müssen die ausführbaren Dateien (.exe) heruntergeladen werden. Die drei Anwendungen brauchen nicht installiert werden, da sie Standalone Programme sind. Lade folgende Dateien von der PuTTY Download Page und speichere sie auf Deinem Windows Rechner:

Continue reading

Mysql Exportieren / Importieren

MYSQL Datenbank exportieren / export MYSQL database Es gibt 3 verbreitete Möglichkeiten um Datenbanken zu exportieren Eine Datenbank / Single database Export einer Datenbank sowie einer oder meherer Tabellen / Export of one database and one or more tables linux> mysqldump database [tables] > database.sql mit Benutzer und Passwort/ using specified user and password linux> mysqldump database -u USER -p [tables] > database.sql Mehrere Datenbanken / Multiple databases Export mehrere Datenbanken gleichzeitig / Export of multiple databases at the same time linux> mysqldump –databases DB1 [DB2 DB3…] > some_databases.sql mit Benutzer und Passwort/ using specified user and password linux> mysqldump –databases DB1 [DB2 DB3…] -u USER -p > some_databases.sql Alle Datenbanken / All databases Export aller vorhandenen Datenbanken gleichzeitig / Export of all existing databases at the same time linux> mysqldump –all-databases > all_databases.sql mit Benutzer und Passwort/ using specified user and password linux> mysqldump –all-databases -u USER -p > all_databases.sql MYSQL Datenbank importieren / import MYSQL database Wenn ein Dumpfile (sql-File) vorliegt ist der Datenimport denkbar einfach 2.1: Datenbank-Dump importieren / Import dump-file Importieren eines Dump/ SQL-Files / Import a dump- sql-file linux> mysql -p dbname < dumpfile.sql mit Benutzer und Passwort/ using specified user and password linux> mysql -p dbname -u USER -p < dumpfile.

Continue reading

Makros für Logitech G15 Tastatur Programieren

Makro-Programierung über die Tastatur MR Button auf G15 Tastatur drücken G-Taste drücken mit der es dann später ausgeführt werden soll Eingeben des Textes usw. der gewünschten Aktion wie z.B. “makro faq” MR Button erneut drücken Erledigt - wenn man nun auf die G-Taste drückt die man vorher programiert hat wird “makro faq” geschrieben Makro-Programierung über die Software Öffnen des Logitech G-series Keybord Profiler Programmes (meist am Desktop rechts unten das graue Symbol auf dem G1 oben steht) Modus wählen - M1,M2 oder M3 (das Menü indem man es später haben will) Drücken der G-Taste mit der das Makro abrufbar sein soll Auswählen: “Makro zuweisen” Neues Makro erstellen Namen für das Makro eingeben Enter-Taste Es kann auf der rechten Seite ein Häckchen gesetzt werden wenn gewünscht Verzögerung zwischen Ereignise aufzeichnen beteutet das die Pausen während dem schreiben mitaufgezeichnet werden Makroname auf gamepaanel anzeigen bedeutet dass der Name des erstellten Makros auf dem LCD angezeigt wird Aufzeichnung starten anklicken Text schreiben den man später ausführen will “Aufzeichnung beenden” anklicken “Ok” anklicken Erledigt Tastendruck einer G-Taste zuweisen In den Logitech D-Series Keyboard Profiler gehen Gewünschte G-Taste anklicken “Tastendruck zuweisen” auswählen Taste bzw. Tastenkombination drücken “Ok” anklicken Funktion zuweisen Logitech G-Series Keyboard Profiler öffnen G-Taste auswählen Funktion zuweisen Zuweisen was erwünscht wird wie z.

Continue reading

PHP Capatcha Script

So ziemlich jeder der ein Kontaktformular, Gästebuch oder auch Forum auf seiner Webseite betreibt hat schon einmal Bekanntschaft mit dieser verhassten Gattung gemacht: Spam-Bots! Die ultimative Lösung gegen Spam-Bots gibt es nicht, aber man kann ihnen dennoch mit relativ einfachen Mitteln das Leben wesentlich erschweren. Eine sehr einfache und zugleich effektive Maßnahme ist das einbauen eines sogenannten Captcha. Der Ausdruck Captcha steht für Completely Automated Public Turing test to tell Computers and Humans Apart und ist vereinfacht ausgedrückt eine Methode, die menschliche Interaktion bedarf um eine bestimmte Aktion auf einer Webseite auszuführen. Eine ausführliche Erklärung dazu findet man in diesem Artikel bei Wikipedia In diesem HowTo erstelle ich ein einfaches Captcha-Script und anhand eines Pseudo-Kontaktformulars wird demonstriert wie man auch nachträglich noch ein Captcha in sein Formular, Gästebuch oder was auch immer, einbauen kann. Pseudo-Kontaktformular sage ich deswegen, weil die Mail-Funktion nicht eingebaut ist und eine anständige Überprüfung der Benutzereingaben nicht statt findet. Voraussetzungen Um das hier gezeigte erfolgreich in eigene Projekte zu übernehmen benötigt man PHP Kenntnisse Webserver mit GD2 Unterstützung Lernbereitschaft & Zeit Ob der Webserver, auf dem das Script laufen soll, GD2 Unterstützung bietet kann man sehr einfach herausfinden indem man phpinfo() ausführt und den Abschnitt GD unter die Lupe nimmt.

Continue reading

Ansible AD HOC Command Examples – Ansible Cheat Sheet

Ansible AD HOC Command Examples - Ansible Cheat Sheet Excerpt Ansible ad hoc commands are one-liners designed to achieve a very specific task they are like quick snippets and your compact swiss army knife when you want to do a quick task across multiple machines. Simply put, Ansible ad hoc commands are single-line Linux shell commands, and a playbook is like a shell script, a collection of multiple commands with logic. Ansible special commands are single lines designed to accomplish a very specific task. They are like quick extractors and your compact Swiss army knife when you want to complete a task quickly on multiple machines. Simply put, Ansible ad hoc commands are single-line Linux shell commands, and a playbook is like a shell script, a collection of multiple commands with logic. Ansible special commands are useful when you want to perform a quick task. We’ve collected over 20 examples that will help you get started with Ansible AD HOC commands. This is your Ansible AD HOC command cheat sheet or Ansible cheat sheet. Prerequisites Must install Ansible (only on the control machine, remember there is no agent) Some remote virtual machines to test, you can use vagrant to build them.

Continue reading

Ansible apt module Examples - install with apt

Excerpt Ansible APT Package manager is an Ubuntu equivalent for RedHat yum package manager. Just like all other ansible modules apt ansible module is built after one specific unix command of Debian apt-get It is always recommended to choose the modules rather using the raw unix commands over the shell module as it would bring more standard and fault tolerance to your Ansible Playbook The Ansible APT package manager is the Ubuntu equivalent of the RedHat yum package manager. Just like all other Ansible ‘apt’ modules, the Ansible module is built after the Debian-specific Unix ‘apt-get’ command You should choose modules instead of using raw Unix commands instead of shell modules as this will bring more standards and fault tolerance to your Ansible Playbook. So how to use apt ansible module in playbook or in special way. GOOD!. This article will cover the ansible apt module in detail with various examples. Introduction to ansible apt module Ansible apt module manages apt packages in Debian or Ubuntu systems. In typical Ubuntu machine, in order to install a package, you would execute the following command apt install nginx Same way here in ansible, the following playbook/play would do that for you

Continue reading

Ansible Command Module Examples

Excerpt Ansible Command module is used to execute commands on a remote node. The Command module is mainly used to execute simple Linux commands on a remote node/server that is part of a server group or a standalone server mentioned in the server group. If you want to run some simple shell commands on a remote server, you can use Ansible Command Module Examples The Ansible Command module is used to execute commands on the remote node. The Command module is mainly used to execute simple Linux commands on a remote node/server that is part of a server group or a standalone server mentioned in the server group. If you want to run some simple shell commands on a remote server, you can use this Ansible command module . But when there are no overly complicated shell commands or two commands concatenated with PIPE. you cannot use this command module and you must choose the shell module instead of this one. Not just a pipe, if you use one of these characters like | > < in your command you should consider using the shell module Where to use Ansible SHELL and Where to use Ansible COMMAND? ls -lrt /etc/httpd/conf is simple and can be executed with Ansible command module

Continue reading

Ansible Dry Run – How to Run Playbook in Ansible Check mode

Excerpt Introduction Ansible Dry Run or Ansible Check mode feature is to check your playbook before execution like Ansible’s –syntax-check feature. With Ansible Dry Run feature you can execute the playbook without having to actually make changes on the server. With Ansible Dry Run you can see if the host is getting changed or not. Introduction Ansible Dry Run or Ansible Check mode feature is to check your playbook before execution like Ansible’s --syntax-check feature. With Ansible Dry Run feature you can execute the playbook without having to actually make changes on the server. With Ansible Dry Run you can see if the host is getting changed or not. Here is a sample playbook is written to install and start the Apache HTTPD web server. --- - name: Playbook hosts: webservers become: yes become_user: root tasks: - name: ensure apache is at the latest version yum: name: httpd state: latest - name: ensure apache is running service: name: httpd state: started Our objective is to install Apache web server and start it but if we want to see if it would affect/change the host or throw error . We can Dry Run this Playbook with no further ado, Let me tell you how to Run the Ansible Playbook in Check mode or dry run mode ASCII Video

Continue reading

Ansible Find Example 0s – How to use Ansible Find

Excerpt The Ansible search module works similarly to the Find Linux command and allows searching files and folders based on various search criteria like file age, access date, modification date, expression search pattern regular, etc. As stated earlier, this is a more feasible way to run the Linux find command with an inbuilt standard, this module is designed. As stated earlier, this is a more efficient way to run the Linux find command with an existing standard. This module is intended for use on Linux servers only. For Windows, you should use the win_find module instead. Because this will also be the command to replace Linux Find. I will list all 0 examples equivalent to Linux Find. Example 01: Find all the log files older than 30 days with Ansible Find In this section, we are going to see how ansible find is going to help us find the more than 30 days old files. The Linux find Command Here is the command that you would ideally execute in the Linux OS find /var/log -name "*.log" -type f -mtime +30 The Ansible Find AdHoc Command The same Linux command can be rewritten as ansible ad hoc command as follows

Continue reading

Ansible Reboot system and wait_for reboot to complete - Middleware Inventory

Ansible Reboot system and wait_for reboot to complete Excerpt The Objective The purpose of this post is to explain with an example of how ansible initiate the reboot and wait for the reboot to complete There are cases where we want our remote nodes to be rebooted or restarted. For example, Take the Patching as an example. As part of quarterly patching, we upgrade the installed software and packages and do The Objective The purpose of this article is to explain with an example how Ansible initiates a reboot and waits for the reboot to complete. There are cases where we want our remote nodes to be rebooted or restarted. For example, let’s take patching as an example. As part of our quarterly patches, we upgrade installed software and packages and perform many other tasks as well as a final reboot for the changes to take effect. When we restart the server (box). Your ansible read may fail due to error “Shared connection closed” But this can be avoided and you can reboot the box and wait for the server to reboot and then run validation or tests after reboot. How to reboot and wait for it to complete with ansible There are many methods to accomplish this

Continue reading

Fail2ban jail to mitigate DoS attacks against Apache

Fail2ban jail to block DoS attacks against Apache Excerpt Using a Fail2ban jail to mitigate simple DoS attacks against Apache. # Block a single IP $ iptables -A INPUT -s <IP> -j DROP # Unblock it $ iptables -D INPUT -s <IP> -j DROP Recently, one of our shared hosting webservers got hit by a DoS attack. The attacker started a larger vulnerability scan against common Wordpress security issues. We already had common brute-force attack patterns on Wordpress covered by a custom Fail2Ban jail, which mainly trapped POST requests to xmlrpc.php or wp-login.php (the usual dumb WP brute-force attacks…). But this DoS attack had hundreds of customer sites as target and did not get trapped by our existing rules. After having blocked the attacker’s IP (glad this was no large-scale DDoS!), I wrote an extra Fail2Ban jail which traps such simple DoS attacks. It’s a very basic Fail2Ban jail that should cover common attacks and should not cause any false positives as it is only getting triggered by a large amount of failed GET requests. There are other good articles about setting up such Fail2Ban jails to block simple DoS, but they didn’t quite fit our needs: Using fail2ban to mitigate simple DOS attacks against apache (or why I am a terrible sysop) Install fail2ban to protect your site from DOS attacks Requirements What we would like to accomplish:

Continue reading

Fail2ban persistent banning

Fail2ban persistent banning Excerpt Persistent IP banning using Fail2ban’s recidive jail. If you are using Fail2ban, there is no standard recommended way to persistently ban IPs. Some people recommend to do this outside of Fail2ban, using e.g. iptables-persistent, which is actually super easy to install and configure. But let’s say, we don’t want to install any extras and want to accomplish the same with Fail2ban, as we already have fail2ban on every single host (which is a must!). But this did not work out for me. The thing is, if we extend actionstart in action.d/iptables-multiport.conf (or iptables-multiport.local override) as recommended in above tutorials, that is not going to add any IPs on a Fail2ban restart, but only once the first IP gets added to any jail. So these are my two proposed solutions: Using recidive jail (ban for 1 week) The provided recidive jail/filter monitors the fail2ban log file, and enables you to add long time bans for ip addresses that get banned by fail2ban multiple times. Default configuration looks like this: jail.conf [recidive] logpath = /var/log/fail2ban.log banaction = %(banaction_allports)s bantime = 1w findtime = 1d Simply enable this jail, e.g. in jail.d/custom.conf: jail.d/custom.conf [recidive] enabled = true We could then ban an IP manually for a whole week by adding it to that jail:

Continue reading

find-l: Auffinden aller (Nicht-) leeren Dateien in einem Verzeichnis

Das Erstellen einer leeren Datei unter Linux ist recht einfach. Wenn eine Datei nicht existiert können Sie einfach eine leere Datei mit dem Befehl Touch erstellen. touch DATEI ls -l DATEI -rw-r - r - 1 tux tux 0 2009-05-02 20:15 DATEI Findet alle leeren Dateien in einem Verzeichnis kann aber auch mit einem einzigen Befehl erledigt werden. Genauso auch für nicht-leeren Dateien. Angenommen Sie möchten alle leeren Dateien im Verzeichnis /home/tux aufspüren, dann lautet der Befehl: find -l /home/tux -maxdepth 1 -type f -size 0 Standardmäßig findet der Befehl keine symbolischen Dateien. Verwenden Sie die-L-Option um diese ebenfalls zu erhalten. Der Ausdruck -maxdepth 1 legt die maximale Tiefe fest bei der Suche. Standardmäßig sucht der Befehl find rekursiv in das Verzeichnis. Eine maximale Tiefe von 1 bedeutet, dass Sie nur die Dateien direkt in /home/tux suchen. Beachten Sie, dass die Tiefe 0 die Ebene der Befehlszeilenargument ist. (/home/tux). Sie können maxdepth und mindepth zu fein Kontrolle der Tiefe verwenden wie Sie wollen. ​ -type f bedeutet regelmäßige Dateien. Dies ist nicht unbedingt notwendig für leere Dateien (im Gegensatz zu denen die nicht leer sind) ​ Größe 0 ist selbsterklärend. Wenn Sie alle nicht-leeren Dateien im gleichen Verzeichnis finden wollen so setzen Sie einfach ein !

Continue reading

HowTo secure apache2 with lets Encrypt on Debian 12

How To Secure Apache with Let’s Encrypt on Debian 12 Excerpt Let’s Encrypt is a Certificate Authority (CA) that provides an easy way to obtain and install free TLS/SSL certificates, enabling encrypted HTTPS on web servers. In this tutorial, you will use Certbot to get a free SSL certificate for Apache on Debian 12 and configure your certificate for auto-renewal. Introduction Let’s Encrypt is a Certificate Authority (CA) that provides a way to obtain and install free TLS/SSL certificates), thereby enabling encrypted HTTPS on web servers. It helps the process by providing a software client, Certbot, that attempts to automate most (if not all) of the required steps. Currently, the entire process of obtaining and installing a certificate is fully automated on both Apache and Nginx. In this tutorial, you will use Certbot to get a free SSL certificate for Apache on Debian 12 and configure your certificate for auto-renewal. This tutorial will use the native Apache virtual host file instead of the default configuration file. We recommend that you create new Apache virtual host files for each domain as this helps avoid common errors and keep the default files as a fallback configuration. Prerequisites To follow this tutorial, you will need:

Continue reading

Migrate from Jekyll

Move static content to static Jekyll has a rule that any directory not starting with _ will be copied as-is to the _site output. Hugo keeps all static content under static. You should therefore move it all there. With Jekyll, something that looked like ▾ <root>/ ▾ images/ logo.png should become ▾ <root>/ ▾ static/ ▾ images/ logo.png Additionally, you’ll want any files that should reside at the root (such as CNAME) to be moved to static. Create your Hugo configuration file Hugo can read your configuration as JSON, YAML or TOML. Hugo supports parameters custom configuration too. Refer to the Hugo configuration documentation for details. Set your configuration publish folder to _site The default is for Jekyll to publish to _site and for Hugo to publish to public. If, like me, you have _site mapped to a git submodule on the gh-pages branch, you’ll want to do one of two alternatives: Change your submodule to point to map gh-pages to public instead of _site (recommended). git submodule deinit _site git rm _site git submodule add -b gh-pages [email protected]:your-username/your-repo.git public Or, change the Hugo configuration to use _site instead of public. { .. "publishdir": "_site", .. } Convert Jekyll templates to Hugo templates That’s the bulk of the work right here.

Continue reading

Migrate from Jekyll

Move static content to static Jekyll has a rule that any directory not starting with _ will be copied as-is to the _site output. Hugo keeps all static content under static. You should therefore move it all there. With Jekyll, something that looked like ▾ <root>/ ▾ images/ logo.png should become ▾ <root>/ ▾ static/ ▾ images/ logo.png Additionally, you’ll want any files that should reside at the root (such as CNAME) to be moved to static. Create your Hugo configuration file Hugo can read your configuration as JSON, YAML or TOML. Hugo supports parameters custom configuration too. Refer to the Hugo configuration documentation for details. Set your configuration publish folder to _site The default is for Jekyll to publish to _site and for Hugo to publish to public. If, like me, you have _site mapped to a git submodule on the gh-pages branch, you’ll want to do one of two alternatives: Change your submodule to point to map gh-pages to public instead of _site (recommended). git submodule deinit _site git rm _site git submodule add -b gh-pages [email protected]:your-username/your-repo.git public Or, change the Hugo configuration to use _site instead of public. { .. "publishdir": "_site", .. } Convert Jekyll templates to Hugo templates That’s the bulk of the work right here.

Continue reading

SSH via HTTP - proxytunnel

SSH via HTTP — proxytunnel Excerpt SSH is a hugely powerful tool for communicating with and manipulating remote machines, and as a result many companies fear it and try to block it. As such, many corporate firewalls block port 22, the port naturally used by SSH. However, few corporations can afford to block ports 80 or 443, the ports designated for http traffic. SSH is a hugely powerful tool for communicating with and manipulating remote machines, and as a result many companies fear it and try to block it. As such, many corporate firewalls block port 22, the port naturally used by SSH. However, few corporations can afford to block ports 80 or 443, the ports designated for http traffic. It is possible to work around these firewalls by configuring SSH to listen on either port 80 or 443. However, this approach is only suitable if you are not already using, or planning to use, port 80 or 443 to serve your websites. There is, however, another option. If you have are running an Apache webserver, you can configure it to act as an HTTP or HTTPS proxy and use it to forward SSH traffic that comes in on ports 80 and 443 to your SSH server.

Continue reading

Tunneling using SSH server listening on port 443

Tunneling using SSH server listening on port 443 Configuring SSH server to listen on port 443 To configure SSH server to listen on port 443, probably along with port 22 use following steps: Edit ‘/etc/ssh/sshd_config’ file Use following configuration for port: Port 22 Port 443 Restart ssh using ‘service sshd restart’ Connecting to SSH server over port 443 To connect to a machine over port 443 when direct connection to port 443 is allowed use: ssh -p 443 <username>@<server_FQDN_or_ip> Connecting to SSH server port 443 through HTTP Proxy server If direct connection to port 443 is not allowed and use of proxy server is necessary to access Internet then use following steps to connect to SSH server using proxy server: Install corkscrew program on machine using steps mentioned at Connecting to SSH server listening on port 443 using HTTP proxy server with HTTP CONNECT Enable use of corkscrew for ssh as mentioned the same page by modifying ‘/etc/ssh/ssh_config’ and entering something similar to: Host * ProxyCommand corkscrew <proxy-server> <proxy-port> %h %p In this case SSH to all machines would be forwarded through proxy server. If this is not desired and only SSH to specific machine is desired are required to be forwarded using proxy then use:

Continue reading