sshd服务提供两种安全验证的方法:
基于口令的安全验证:经过验证帐号与密码即可登陆到远程主机。
基于密钥的安全验证:需要在本地生成”密钥对“后将公钥传送至服务端,进行公共密钥的比较(相对安全)。
首先:无论通过哪一种安全验证方法进行远程控制都需要配置远程主机sshd服务的文件:
[root@lhbza ~]#vim /etc/ssh/sshd_config
并且在远程主机上启动sshd服务并加入到开机启动项:
[root@lhbza ~]# systemctl start sshd
[root@hbza ~]# systemctl enable sshd
sshd服务的配置文件解析:
参数 |
作用 |
#Port 22 |
默认的sshd服务端口。 |
#ListenAddress 0.0.0.0 |
设定sshd服务端监听的IP地址。 |
#Protocol 2 |
SSH协议的版本号。 |
#HostKey /etc/ssh/ssh_host_key |
SSH协议版本为1时,私钥存放的位置。 |
HostKey /etc/ssh/ssh_host_rsa_key |
SSH协议版本为2时,RSA私钥存放的位置。 |
#HostKey /etc/ssh/ssh_host_dsa_key |
SSH协议版本为2时,DSA私钥存放的位置。 |
#PermitRootLogin yes |
设定是否允许root用户直接登录。 |
#StrictModes yes |
当远程用户私钥改变时则直接拒绝连接。 |
#MaxAuthTries 6 |
最大密码尝试次数 |
#MaxSessions 10 |
最大终端数 |
#PasswordAuthentication yes |
是否允许密码验证 |
#PermitEmptyPasswords no |
是否允许空密码登陆(很不安全) |
一、口令验证:
ssh命令用于远程管理Linux主机,格式为:“ssh [参数] 主机”。
参数 |
作用 |
-p |
指定连接端口(默认为22) |
-v |
显示连接过程的详细信息 |
指定用户登录 :
ssh 用户@主机
[root@yyd~]# ssh sdy@192.168.38.100
root登录:
[root@yyd ~]# ssh 192.168.38.100
二、密钥验证:
使用密码验证终归会存在着被骇客暴力破解或嗅探监听的危险,其实也可以让ssh服务基于密钥进行安全验证(可无需密码验证)。
第1步:在本地主机中生成“密钥对”并将公钥传送到远程主机中:
1、在本地生成密钥
[root@yyd ~]# ssh-keygen
2、将生成好的公钥密钥传送至远程主机:
[root@yyd ~]# ssh-copy-id 192.168.38.100
第2步:首先要在远程主机中修改sshd服务的配置文件(修改后记得重启服务):
1、编辑ssh服务程序主配置文件。
2、将允许密码验证的参数设置为no。
<1>、进如vi编辑器 ’:/PasswordAuthentication' 回车,搜索文件内容:
<2>、搜索结果:
<3>、设置配置
PasswordAuthentication no 运行设置为no
#PasswordAuthentication yes 注释设置yes
第3步:将允许密钥验证的参数设置为yes。
vim esc 切换命令模式 同上步骤运行 PubkeyAuthentication yes
第4步:保证设定是否允许root用户直接登录
运行PermitRootLogin yes
第5步:保存并退出配置文件。
:wq
第6步:重启ssh服务程序后即可生效。
第7步:最后来尝试无需密码的远程登录吧:
[root@yyd ~]# ssh 192.168.38.100