Beim ersten Anmelden auf einem Host wird fingerprint des Hosts angezeigt. Dieser muss jeweils bestätigt werden. Dieser sollte, wenn möglich überprüft werden um sicher zu sein nicht auf einem falschen Host einzuloggen.
marius@linux:~$ ssh server.example.com The authenticity of host 'server.example.com (192.168.32.46)' can't be established. RSA key fingerrint is d6:0f:99:fc:74:1b:a2:67:36:b6:72:84:9e:3a:51:ae. Are you sure you want to continue connecting (yes/no?) yes Warning: Permanently added 'server.example.com,192.168.32.46' (RSA) to the list of known hosts. marius@server.example.com's password: ****** marius@server:~$
Der fingerprint kan auch jederzeit später noch überprüft werden mit hilfe von ssh-keygen.
marius@linux:~$ ssh-keygen -F server.example.com # Host server.example.com found: line 3 type RSA server.example.com,192.168.32.46 ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAIEAwMtHNpZ+3kbpD2ld snIRNyMufgQkvniwDICLbQWKIQiQdz+b/RRqszjMLcg9ZFLAZFxsPHhXY2PfPMMOjnr3+SCKHClgq+A0 TAoIDnsaDufK5j03C0mUwx2C7mLz3CuHYtMn2nRrQUX8oyi9aVxhalGzcz1zi/3TbJmDsFviPDU=
Wenn man sich mit einem anderen Ustername als lokal anmelden will, dann gibt es zwei möglichkeiten ssh das mitzuteilen.
marius@linux:~$ ssh -l mariusr server.example.com mariusr@server.example.com's password: ****** mariusr@wigwam:~$
marius@linux:~$ ssh nicole@server.example.com mariusr@server.example.com's password: ****** mariusr@server:~$
Wenn man nur ein Befehl auf einem anderen host ausführen möchte, so kann man den Befehl auch direkt mitgeben.
marius@linux:~$ ssh server.example.com hostname -f marius@server.example.com's password: ****** server.example.com marius@linux:~$
Mit scp lassen sich Dateien auch auf andere Hosts kopieren. Dazu wird die Datei durch den SSH-Tunnel übertragen. So ist sie auch gleich noch vor Mitlesern geschützt.
marius@linux:~$ scp index.htm server.example.com:~/public_html/ marius@server.example.com's password: ****** index.htm 100% 10KB 10.0KB/s 00:00 marius@linux:~$
Das ganze geht natürlich in die umgekehrte Richtung.
marius@linux:~$ scp server.example.com:~/public_html/index.htm . marius@server.example.com's password: ****** index.htmm 100% 10KB 10.0KB/s 00:00 marius@linux:~$
Eine andere möglichkeit Dateien übers Netzwerk zu kopieren ist sftp. Dabei werden dei ftp-Befehle benutzt um die Dateien hin und her zu schieben. Auch hier geht alles über einen verschlüsselten SSH-Tunnel.
marius@linux:~$ sftp server.example.com Connecting to server.example.com,192.168.32.46... marius@server.example.com,192.168.32.46's password: ****** sftp> cd public_html sftp> put index.htm Uploading index.htm to /home/marius/public_html/index.html index.htmm 100% 10KB 10.0KB/s 00:00 sftp> ls index.html sftp> get index.htm Fetiching /home/marius/public_html/index.html to index.html index.htm 100% 10KB 10.0KB/s 00:00 sftp> quit marius@linux:~$
Um sich nicht jedes mal sein Passwort eingeben zu müssen kann man Keys erstellen und sich per Public-Key authentifizieren.
marius@linux:~$ ssh-keygen -t dsa Generating public/private dsa key pair. Enter file in which to save the key (/home/marius/.ssh/id_dsa): <ENTER> Enter passphrase (empty for no passphrase): <ENTER> Your identification has been saved in /home/marius/.ssh/id_dsa. Your public key has been saved in /home/marius/.ssh/id_dsa.pub. The key fingerprint is: 70:a2:31:0e:23:5e:69:bc:fc:af:4e:4b:4d:86:e4:fe marius@linux marius@linux:~$
Danach muss man den Public-Key auf die Hosts kopieren, damit das Login per Key funktioniert. Dies geht am einfachsten mit ssh.
marius@linux:~$ cat .ssh/id_dsa.pub | ssh server.example.com cat ">>" .ssh/authorized_keys marius@server.example.com's password: ****** marius@linux:~$
Danach kann man sich ohne ein password einzugeben anmelden.
rdm@linux:~$ ssh wigwam.lugs.ch rdm@wigwam:~$
Allerding sollte man die Keys nicht unverschlüsselt rumliegen lassen. Deshalb sollte man den Schlüssel mittels eines Passwords verschlüsseln.
rdm@linux:~$ ssh-keygen -p -f .ssh/id_dsa Key has comment '.ssh/id_dsa' Enter new passphrase (empty for no passphrase): ****** Enter same passphrase again: ****** Your identification has been saved with the new passphrase. rdm@linux:~$
Um danach nicht für jeden gebrauch des Keys das Key-Password eingeben zu müssen startet man den ssh-agent und fügt den Key mit ssh-add hinzu.
rdm@linux:~$ eval `ssh-agent` Agent pid 5937 rdm@linux:~$ ssh-add Enter passphrase for id_dsa: ****** Identity added: /home/rdm/.ssh/id_dsa (/home/rdm/.ssh/id_dsa) rdm@linux:~$
Das starten des ssh-agent sollte wenn möglich gleich beim einloggen geschehen, damit alle Subshells auch auf den Agent zugreifen können und nicht einen eigenen starten müssen. Wenn der Agent nicht mehr gebraucht wird kann man ihn auch stopen.
rdm@linux:~$ ssh-agent -k Agent pid 5937 killed rdm@linux:~$