Tag Archives: ssh apps

Εκτελέστε μια εφαρμογή με το που ο χρήστης κάνει login σε ssh χωρίς πρόσβαση σε περιβάλλον κέλυφους.

Πολλάκις παρατηρήσατε ότι όταν κάνετε ssh στο giithub.com σας εμφανίζει τα κάτωθι:

PTY allocation request failed on channel 0
Hi pc-magas! You’ve successfully authenticated, but GitHub does not provide shell access.
Connection to github.com closed.

Έτσι όντας καλός χάκερ (Οκ συνείδηση είμαι ψωνάρα 😉 ) σκεύτηκα:

Θα μπορούσα να τρέξω μια εφαρμογή απ’ ευθείας με το που κάνω ssh σε κάποιον server χωρίς να μπώ σε shell;

Και η απάντηση είναι ΝΑΙ.

Έτσι έκανα μια απλή εφαρμογή σε παλιά καλή C (να θυμηθούμε και τα φοιτητικά μας χρόνια):


#include <stdio.h>
int main(int argc, char *argv)
{
puts("Hello World!");
return 0;
}

To αποθήκευσα σαν hello.c και την έκανα compile:

gcc hello.c

Και μετά μετέφερα το a.out στον φάκελο /bin:


sudo mv a.out /bin/hello

Έτσι δίνοντας απλά hello στο terminal δείχνει το μύνημα «Hello world».

Χμμ εφόσον έχουμε το απλό application εάν το ορίσω σαν shell ενός χρήστη τι θα γίνει;

Έτσι λοιπόν έκανα έναν χρήστη ορίζοντας σαν shell το /bin/hello.


sudo adduser --s /bin/hello hello

Εφόσον συμπληρώσουμε τα πεδία που λείπουν τότε προσπαθούμε να συνδεθούμε μέσω του χρήστη hello.


sudo su hello

Και λαμβάνουμε το μύνημα «Hello world».

Χμμ εάν προσπαθήσω να συνδεθώ μέσω ssh ώς χρήστης hello τι θα συμβεί;

Μα φυσικά θα εμφανιστεί το μήνυμα hello μαζί όμως με κάποια άλλα μηνύματα συστήματος.

Στο αρχικό παράδειγμα όμως δεν εμφανίζει τέτοια μηνύματα, πρέπει κάπως να τα «σιωπήσουμε» (και για κάποιο λόγο παίζει το soundtrack της ταινίας «Godfather» δεν ξέρω γιατί ❓ ).

Αυτό γίνεται σχετικά εύκολα τρέχοντας:


sudo -u hello touch /home/hello/.hushlogin

Και παίρνουμε αυτό που θέλουμε.

Όμως τώρα μου ήρθε μια ιδέα εάν τρέχει μια εφαρμογή που τρέχει σε περιβάλλον ncurses (παράθυρα σε τερματικό σε απλά Ελληνικά);

Έτσι έβαλα στο hello.c τον κώδικα που βρήκα στο http://www.tldp.org/HOWTO/NCURSES-Programming-HOWTO/windows.html#WINDOWBASICS

εγκατέστησα την ncurses-dev


sudo apt-get install ncurses-dev

Και το έκανα ξανά compile:


gcc hello.c -lncurses

Και μετά ξαναμετέφερα το a.out στον φάκελο /bin:


sudo mv a.out /bin/hello

Τώρα πλέον έχουμε μια εφαρμογή με ένα περιβάλλον λιίγο ποιο φιλικό προς τον χρήστη μέσω ssh connection.

Τώρα που μπορεί να χρησιμέψει αυτό:

Στο να έχεις μια εφαρμογή σε έναν server και να επιτρέπεις σε συγκεκριμένα άτομα και συγκεκριμένους υπολογιστές να την τρέχουν χωρίς πολλά πολλά. Η εφαρμογή μπορεί να είναι το οτιδήποτε από την super secret εφαρμογή που να ελέγχει την εκτόξευση πυρηνικών κεφαλών μέχρι απλά ένα trollapp που να δείχνει σε asciiart την ταινία starwars.