Mahlzeit,
ich hab mich in den letzten Wochen ein bisschen mit dem Aufsetzen eines 2. SSH-Servers beschäftigt. Das ganze würde ich gerne der Allgemeinheit als Wiki-Artikel zur Verfügung stellen. Vorher bitte ich euch ums Korrekturlesen, und ausgiebiges Ausprobieren dieser Rohfassung. Also nur die Befehle, der Text kann dann ja ergänzt werden. Also vor allem prinzipielle Dinge. Gehen die Befehle, geht das einloggen, Fehlermeldungen,...
Danke.
======================================
VERSION 0.0.2
Aufsetzen eines 2. SSH-Servers mit anderem Port:
Motivation:
Zusätzlicher SSH-Server, der nach außen freigegeben werden kann, abgesichert werden kann etc. ohne den bestehenden SSHD zu beeinflussen.
Alle Arbeiten natürlich als root. [Hinweis auf den Artikel zu sudo, permant-root-sein ...]
Ich habe im weiteren Verlauf immer die Ausgaben des diff-Kommandos zwischen den Original-Dateien und den modifizierten Dateien. Das ist erstmal nur zur Übersicht, da man dort recht schön sitzt was geändert wurde. Am einfachsten ist es aber, wenn man die angepassten Dateien direkt herunterlädt:
Sämtliche angepasste Dateien gibt es als Archiv unter
http://www.ojkastl.de/pub/LinuxClub/2ter_SSHD_HOWTO
-----------------------------------------------------
So jetzt geht es los:
/etc/ssh/sshd_config nach /etc/ssh/ojs_sshd kopieren, dann den Eintrag zu "Port" anpassen:
diff /etc/ssh/ojs_sshd_config /etc/ssh/sshd_config
Später kann man den zweiten SSHD ja beliebig anpassen und absichern (allowusers, pubkey,...)
/etc/sysconfig/ssh nach /etc/sysconfig/ojs_ssh kopieren und anpassen:
Hier ein "diff /etc/sysconfig/ssh /etc/sysconfig/ojs_ssh"
/etc/init.d/sshd nach /etc/init.d/ojs_sshd kopieren, und anpassen:
"diff /etc/init.d/sshd /etc/init.d/ojs_sshd"
Anschließend linkt man /usr/sbin/sshd nach /usr/sbin/ojs_sshd per
Dann sollte man das Skript mal testen, einfach indem man
und
aufruft. Danach sollte ein
zwei Einträge liefern:
Durch unsere Änderungen läuft der zweite SSHD mit einer anderen Konfiguration, und hat ein eigenes PID-File (wichtig für die Status-Meldungen).
So, wenn alles geklappt hat, kann man absichern, den Port in der Firewall öffnen (<hier den Link zum Wiki-Artikel einfügen>) und das Skript für die jeweiligen Runlevel installieren. Ob man das per insserv, chkconfig oder Yast-Runleveleditor macht ist prinzipiell egal.
ANMERKUNGEN:
EDIT 20070515 07:21
Erklärung zu den diff-Ausgaben eingebaut, und Download früher erwähnt.
ich hab mich in den letzten Wochen ein bisschen mit dem Aufsetzen eines 2. SSH-Servers beschäftigt. Das ganze würde ich gerne der Allgemeinheit als Wiki-Artikel zur Verfügung stellen. Vorher bitte ich euch ums Korrekturlesen, und ausgiebiges Ausprobieren dieser Rohfassung. Also nur die Befehle, der Text kann dann ja ergänzt werden. Also vor allem prinzipielle Dinge. Gehen die Befehle, geht das einloggen, Fehlermeldungen,...
Danke.
======================================
VERSION 0.0.2
Aufsetzen eines 2. SSH-Servers mit anderem Port:
Motivation:
Zusätzlicher SSH-Server, der nach außen freigegeben werden kann, abgesichert werden kann etc. ohne den bestehenden SSHD zu beeinflussen.
Alle Arbeiten natürlich als root. [Hinweis auf den Artikel zu sudo, permant-root-sein ...]
Ich habe im weiteren Verlauf immer die Ausgaben des diff-Kommandos zwischen den Original-Dateien und den modifizierten Dateien. Das ist erstmal nur zur Übersicht, da man dort recht schön sitzt was geändert wurde. Am einfachsten ist es aber, wenn man die angepassten Dateien direkt herunterlädt:
Sämtliche angepasste Dateien gibt es als Archiv unter
http://www.ojkastl.de/pub/LinuxClub/2ter_SSHD_HOWTO
-----------------------------------------------------
So jetzt geht es los:
/etc/ssh/sshd_config nach /etc/ssh/ojs_sshd kopieren, dann den Eintrag zu "Port" anpassen:
Code:
cp /etc/ssh/sshd_config /etc/ssh/ojs_sshd
diff /etc/ssh/ojs_sshd_config /etc/ssh/sshd_config
Code:
13c13
< Port 50000
---
> #Port 22
Später kann man den zweiten SSHD ja beliebig anpassen und absichern (allowusers, pubkey,...)
/etc/sysconfig/ssh nach /etc/sysconfig/ojs_ssh kopieren und anpassen:
Code:
cp /etc/sysconfig/ssh /etc/sysconfig/ojs_ssh
Hier ein "diff /etc/sysconfig/ssh /etc/sysconfig/ojs_ssh"
Code:
2c2
< ## Description: SSH server settings
---
> ## Description: OJs SSH server settings
5c5
< ## ServiceRestart: sshd
---
> ## ServiceRestart: ojs_sshd
7c7
< # Options for sshd
---
> # Options for ojs_sshd
9c9
< SSHD_OPTS=""
---
> SSHD_OPTS="-f /etc/ssh/ojs_sshd_config"
/etc/init.d/sshd nach /etc/init.d/ojs_sshd kopieren, und anpassen:
Code:
cp /etc/init.d/sshd /etc/init.d/ojs_sshd
"diff /etc/init.d/sshd /etc/init.d/ojs_sshd"
Code:
6c6
< # /etc/init.d/sshd
---
> # /etc/init.d/ojs_sshd
10c10
< # /usr/sbin/rcsshd
---
> # /usr/sbin/rcojs_sshd
13c13
< # Provides: sshd
---
> # Provides: ojs_sshd
18c18
< # Description: Start the sshd daemon
---
> # Description: Start the ojs_sshd daemon
21c21
< SSHD_BIN=/usr/sbin/sshd
---
> SSHD_BIN=/usr/sbin/ojs_sshd
24c24
< SSHD_SYSCONFIG=/etc/sysconfig/ssh
---
> SSHD_SYSCONFIG=/etc/sysconfig/ojs_ssh
28c28
< SSHD_PIDFILE=/var/run/sshd.init.pid
---
> SSHD_PIDFILE=/var/run/ojs_sshd.init.pid
60c60
< echo -n "Starting SSH daemon"
---
> echo -n "Starting OJs_SSH daemon"
70c70
< echo -n "Shutting down SSH daemon"
---
> echo -n "Shutting down OJs_SSH daemon"
100c100
< echo -n "Reload service sshd"
---
> echo -n "Reload service ojs_sshd"
108c108
< echo -n "Checking for service sshd "
---
> echo -n "Checking for service ojs_sshd "
126c126
< test /etc/ssh/sshd_config -nt $SSHD_PIDFILE && echo reload
---
> test /etc/ssh/ojs_sshd_config -nt $SSHD_PIDFILE && echo reload
Anschließend linkt man /usr/sbin/sshd nach /usr/sbin/ojs_sshd per
Code:
ln /usr/sbin/sshd /usr/sbin/ojs_sshd
Dann sollte man das Skript mal testen, einfach indem man
Code:
/etc/init.d/ojs_sshd status
Code:
/etc/init.d/ojs_sshd start
aufruft. Danach sollte ein
Code:
ps aux|grep sshd
Code:
root 3780 0.0 0.1 5712 952 ? Ss 19:08 0:00 /usr/sbin/ojs_sshd -f /etc/ssh/ojs_sshd_config -o PidFile=/var/run/ojs_sshd.init.pid
root 3964 0.0 0.1 5712 1064 ? Ss 19:08 0:00 /usr/sbin/sshd -o PidFile=/var/run/sshd.init.pid
Durch unsere Änderungen läuft der zweite SSHD mit einer anderen Konfiguration, und hat ein eigenes PID-File (wichtig für die Status-Meldungen).
So, wenn alles geklappt hat, kann man absichern, den Port in der Firewall öffnen (<hier den Link zum Wiki-Artikel einfügen>) und das Skript für die jeweiligen Runlevel installieren. Ob man das per insserv, chkconfig oder Yast-Runleveleditor macht ist prinzipiell egal.
ANMERKUNGEN:
- Das Umbenennen bzw. Linken der Datei in /usr/sbin war bei meinen Tests nötig, da sonst
Code:
rcojs_sshd status
Code:rcsshd status
- Auf Suse 9.3 muss man noch /etc/pam.d/sshd nach /etc/pam.d/ojs_sshd linken, geht per
Code:ln /etc/pam.d/sshd /etc/pam.d/ojs_sshd
sonst gibt es einen Fehler bei der Anmeldung am 2. SSH-Server.
- Ich habe bei mir in beiden sshd_configs die Zeile
Code:#ListenAddress 0.0.0.0
Code:ListenAddress 0.0.0.0
Ein Fehler taucht noch in /var/log/messages auf, nämlich
Code:May 13 17:26:39 HOSTNAME ojs_sshd[3921]: error: getnameinfo failed
Keine Ahnung wie man den loswerden könnte, es funktioniert hier aber alles.
So, noch Fragen?
Sämtliche angepasste Dateien gibt es als Archiv unter
http://www.ojkastl.de/pub/LinuxClub/2ter_SSHD_HOWTO
Viel Spaß beim Testen,
OJ
EDIT 20070515 07:21
Erklärung zu den diff-Ausgaben eingebaut, und Download früher erwähnt.