ssh免密码登录
二、实验需求:
-
为了服务器的安全,在服务器上禁止root用户通过SSH远程登录。
-
允许zhangsan用户在192.168.1.2客户机上通过SSH远程登录。
-
允许lisi用户在192.168.1.3客户机上通过SSH远程登录,
-
允许jerry用户在所有的客户机上通过SSH远程登录,并且是通过密钥对验证。
三、实验步骤:
1.实验的前提,就是配置ip地址和新建用户的操作我就不在介绍了,用户在SSH服务器上创建。
2.SSH(Secure Shell)是一种安全通道协议,主要用来实现字符界面的远程登录、远程复制等功能。SSH协议对通信双方的数据传输进行了加密处理,SSH需要的包有openssh、openssh-server等软件包,默认安装linux的时候就安装了,并且服务也启动了。
3.SSH远程服务有两个主配置文件,一个是服务端的/etc/ssh/sshd_config主要是服务器端的配置,一个是客户端的主配置文件,/etc/ssh/ssh_config,这个文件几乎不用配置,默认就可以了。
4.远程服务SSH主配置文件的介绍,其实也几乎不用配置.....
[root@localhost ~]#vim /etc/ssh/sshd_config
PermitRootLogin no
PermitEmptyPassword no //禁止空密码用户登录
LoginGraceTime 2m //登录验证时间为2分钟
MaxAuthTries 6
5.这里根据实验的步骤需求,我需要禁止root用户远程登录。
修改完成后,需要重新启动SSH的服务 "service sshd restart",才能生效,在客户机上测试用root用户登录。
在客户机上登录服务器时,用ssh命令,登录的方式有两种:
ssh -l root 192.168.1.1 [-p 端口号] //如果修改了端口,需要加"-p"参数。
ssh root@192.168.1.1 [-p 端口号]
在第一次登录的时候必须接受服务器发来的RSA密钥(根据题示输入yes)后才能继续验证,这个密钥是加密数据的通信,会在用户宿主目录里的ssh/目录下生成一个known_hosts文件。可以看到当输入root用户的密码是不能登录,应为在服务器上禁止root用户登录。
6.允许zhangsan用户在客户机192.168.1.2上登录服务器,允许lisi用户在192.168.1.3客户机上通过SSH远程登录,允许jerry用户在所有的客户机上通过SSH远程登录,并且是通过密钥对验证,一般只允许少数的用户登录,需要在/etc/ssh/sshd_config文件中用AllowUsers。有AllowUsers和DenyUsers两种权限,同一时刻只能用一个,
[root@localhost ~]#vim /etc/ssh/sshd_config
.......... //省略
AllowUsers zhangsan@192.168.1.2 lisi@192.168.1.3 jerry //除了这里允许的用户其他用户都禁止远程登录。
[root@localhost ~]#service sshd restart //重新启动sshd服务
zhangsan用户可以在192.168.1.2客户机上远程登录服务器,
lisi用户不能在192.168.1.2客户机上远程登录服务器。在window 7中用puTTY登录服务器用lisi,是可以允许登录。
7.用户jerry在任何客户机上都可以登录服务器,但是默认用密码认证登录的,但这里需要密钥对验证,所以需要创建jerry用户的私钥和公钥文件,私钥文件最后要上传到服务器上需要登录用户的宿主目录下的.ssh/并且名字为authorized_keys,并且.ssh/目录的属主和属组都为要登录用户,权限为700。创建SSH密钥对验证的体系为:
8.通过ssh-keygen -t rsa/dsa //加密算法为rsa或dsa,"-t"用于指定算法类型。
第一步完成, 在做第二步的时候有两种方法。
方法一:通过 scp复制到服务器上。
然后远程到服务上,把复制的id_rsa.pub文件放到jerry的宿主目录下的.ssh/目录下,修改名称。
最后修改.ssh/目录的属主和属组为jerry,并且修改.ssh/目录的权限为700。
然后使用第四步测试jerry用户远程登录的时候需要密钥对验证。
方法二:在客户机上需要一条命令,就可以完成第二步到第三步的操作。
ssh-copy-id -i /root/.ssh/id_rsa.pub jerry@192.168.1.1 //在使用此命令时,默认SSH的端口为22 ,如果修改了端口号,只能用方法一实现。
使用ssh-copy-id命令时,所以的修改文件名和设置权限都是自动完成的,如果没有.ssh/目录,会自动创建的。
9.在window7中,使用密钥对验证时,需要把在linux客户机中生成的私钥文件复制到window7中,通过WinSCP工具
linux中的私钥文件默认在window中是不识别的,我们需要用puttygen.exe软件转换为window能够识别的密钥文件。打开puttygen.exe软件。
选择第二个,第一个是生成密钥,不怎么用。
选择所有文件,不然找不到文件,然后打开。
这里就是在生成密钥的时候你输入的口令,如果没有,就不会出现这个窗口。
好了,window的密钥文件已经创建好了,我们需要用putty.exe中断登录测试。
SSH----Auth是指定认证的方式。
这里需要加在刚才生成的密钥文件,然后登录。
试验完成。
附:ssh中还提供了比较好用的几个命令。scp远程复制和sftp远程ftp。
scp的使用:scp root@192.168.1.2:/etc/passwd /root/pwd123.txt //从192.168.1.2服务器以root用户复制到本地的/root/目录下。
如果端口号修改后, 需要加"-P 端口号"
sftp的使用:sftp root@192.168.1.1 [-oPort=22] //端口修改需要添加"-oPort=端口号"