SSH为Secure Shell的缩写,SSH为建立在应用层和传输层基础上的安全协议,其默认服务端口是22。Telnet服务与ssh服务相似,但Telnet服务在网络上是用明文传送口令和数据,不安全,Telnet的默认服务端口是23。而ssh服务是基于成熟的公钥加密体系,把所有传输的数据进行加密,从而保证数据在传输时不被恶意破坏、泄漏和篡改,具有很高的安全性。
1.安装软件
SSH默认情况下已经安装,如果没有安装,可用yum源安装方法
[root@LJJ-station /]# yum install openssh
2.相关文件
服务名:sshd
服务端主程序:/etc/sbin/sshd
客服端主程序:/etc/bin/ssh
服务端配置文件:/etc/ssh/sshd_config
客服端配置文件:/etc/ssh/ssh_config
存放访问过的计算机的公钥文件:/root/.ssh/known_hosts
注:基本上所有的ssh相关设定都放在/etc/ssh/sshd_config下
3.服务控制命令
基本格式:ssh [email protected]
启动ssh服务:service sshd start
停止ssh服务:service sshd stop
重启ssh服务:service sshd restart
查看22号端口是否打开:netstat -anpt |grep sshd
4.配置方案
(1)密码方式
[root@LJJ-station /]# ssh [email protected]
[email protected]'s password:
Last login: Tue Jul 30 12:35:26 2013 from 10.0.0.121
[root@station2-7 ~]#
(2)密钥方式
先生成密钥文件
[root@station2-7 ~]# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
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:
06:6f:81:6f:e3:2d:e5:83:58:10:d7:01:05:44:10:e2 [email protected]
The key's randomart image is:
+--[ RSA 2048]----+
| . +=*=o. |
| . . + . |
| E + . |
| = . |
| S . |
| B * |
| . + + |
| . . |
| |
+-----------------+
[root@station2-7 ~]#
查看密钥
[root@station2-7 ~]# ll /root/.ssh/
总用量 12
-rw------- 1 root root 1675 7月 30 13:55 id_rsa
-rw-r--r-- 1 root root 408 7月 30 13:55 id_rsa.pub
-rw-r--r-- 1 root root 391 7月 29 18:01 known_hosts
[root@station2-7 ~]#
将公钥复制到远程主机
方法1:scp /root/.ssh/id_rsa.pub 10.0.0.222 /root/.ssh/authorized_keys 不建议使用
方法2:ssh-copy-id (-i /root/.ssh/id_rsa.pub) 10.0.0.222括号里的是R5版本用的,R6中不用加括号内的选项
当再次连接到服务器的时候就不用输入密码了。
5.访问控制(TCPWrappers)
主要文件/etc/hosts.allow这个文件是允许服务列表,这个文件的优先级要高于/etc/hosts.deny
sshd:10.0.0.222 (允许10.0.0.222访问)
sshd:10.1.1.* (*代表10.1.1.0这个网段)
sshd:10.0.1.* EXCEPT 10.0.1.5 (代表允许10.0.1.0这个网段除了10.0.1.5这个IP)
/etc/hosts.deny这个文件是拒绝服务列表
sshd:all (拒绝所有)
6.当ssh访问很慢的原因和解决方法
7.ssh连接不上的排错方法
使用ping命令看能否连通
(1)如果不能ping通,则说明是物理层或者数据链路层或者网络层有问题
再查看MAC地址看是否有改动,可查看/etc/sysconfig/network-scripts/ifcth0.如果有问题将mac地址改好,注意mac地址第二位不能为奇数。改好后需要刷新
如果MAC地址没问题,在查看/etc/sysconfig/network查看IP地址及子网掩码有没有问题,如果有改正并刷新服务。
(2)ping通后就可以判断问题出在传输层及以上层。
检查端口是否打开,刷新服务
使用telnet 进行端口测试,如果没反应查看防火墙,使用iptable -F清空防火墙设置
如果还是没解决,检查ssh的配置文件/etc/hosts.allow等文件,最后查看/etc/ssh/ssh_config的设置