ssh利用强大的加密技术和主机密钥来防止网络嗅探。它是linux下默认启用的唯一网络服务,并且接受远程访问。X 选项 可使远程主机上的程序在本地桌面环境下显示图形界面。为本地主机与远程主机之间的通信通道提供了保护。
来看具体的操作实例。
复制代码 代码示例:
[root@jbxue ~]# ssh 192.168.1.1
The authenticity of host '192.168.1.1 (192.168.1.1)'can't be established.
RSA key fingerprint is83:8f:76:3a:42:31:b0:95:49:72:8a:a7:1c:39:08:e6.
Are you sure you want to
continue connecting (yes/no)?yes
Warning: Permanently added '192.168.1.1' (RSA) to thelist of known hosts.
root@192.168.1.1's password:
Last login: Sun Aug 28 22:05:29 2011
[root@jbxue ~]#
[root@jbxue ~]# ssh user1@192.168.1.1
user1@192.168.1.1's password:
Last login: Fri Jun 17 01:11:57 2011 from 192.168.1.254
[user1@jbxue ~]$
安全 shell (SSH)允许使用私钥-公钥进行身份验证。私钥自己妥善保管,公钥告知任何人。
拥有公钥的 SSH 服务器可以发布仅由私钥的系统才可解答的问题。因此可以根据所持有的密钥进行验证。这样在每次访问系统时不必键入密码,但安全性仍能得到保证。
可以使用ssh-keygen 命令生成密钥。
复制代码 代码示例:
[root@jbxue ~]# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enterfile in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase): 123456
Enter same passphrase again: 123456
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
0c:cf:fc:b0:e3:00:5a:dd:6d:7b:1d:af:9c:8b:05:86root@jbxue.localdomain
在生成密钥期间,将提供用与指定密码的选项。必须提供密码才能访问私钥。
通过此方法,即使密钥被盗,也很难使用密钥。这样在攻击者破解并使用私钥前,可以生成新的密钥并删除所有涉及旧密钥的内容。
生成 SSH 密钥后,密钥将默认存储在家目录的 .ssh/ 目录中:
复制代码 代码示例:
[root@jbxue ~]# ls ~/.ssh/
id_rsa id_rsa.pub known_hosts
可以使用ssh-copy-id 将自己的公钥复制到目标系统
[root@jbxue ~]# ssh-copy-id -i ~/.ssh/id_rsa.pubuser1@192.168.1.1
user1@192.168.1.1's password:
Now try logging into the machine, with "ssh'user1@192.168.1.1'", and check in:
.ssh/authorized_key
[root@jbxue ~]# ssh user1@192.168.1.1
Last login: Tue Sep 6 10:50:26 2011 from 192.168.1.254
[user1@jbxue ~]$
SSH 端口转发
SSH 会自动加密和解密所有 SSH 客户端与服务端之间的网络数据。但是,SSH 还同时提供了一个非常有用的功能,这就是端口转发。它能够将其他 TCP 端口的网络数据通过 SSH 链
接来转发,并且自动提供了相应的加密及解密服务。这一过程有时也被叫做“隧道”(tunneling),这是因为 SSH 为其他 TCP 链接提供了一个安全的通道来进行传输而得名。
例如,Telnet,SMTP,LDAP 这些 TCP 应用均能够从中得益,避免了用户名,密码以及隐私信息的明文传输。而与此同时,如果您工作环境中的防火墙限制了一些网络端口的使用,但
是允许 SSH 的连接,那么也是能够通过将 TCP 端口转发来使用 SSH 进行通讯。
SSH 端口转发提供两大功能:
1,加密 SSHClient 端至 SSHServer 端之间的通讯数据。
2,突破防火墙的限制完成一些之前无法建立的 TCP 连接。
Client<------------>SSHServer<-------------->WEB Server
SSH Server:1.1.1.254/24 172.16.1.254/24
[root@jbxue ~]# ssh -g -L 80:172.16.1.1:80172.16.1.254
ssh -L <local port>:<remote host>:<remoteport> <SSH servername>
没有指定-g 参数的情况下,80 这个端口只接受本机的连接,指定-g 参数 SSH Server 的 80 端口可以接受其他主机的连接WEB Server:172.16.1.1/24。
复制代码 代码示例:
[root@jbxue ~]# cat /var/www/html/index.html
html test
Client:1.1.1.1/24
[root@jbxue ~]# elinks --dump http://1.1.1.254
html test