ssh远程登录

ssh协议

                ---基于 tcp 的 22 号端口

确认是否有ssh包:

[root@server ~] rpm -qa | grep ssh

openssh-clients-8.7p1-24.el9_1.x86_64

openssh-server-8.7p1-24.el9_1.x86_64

1、 ssh的验证过程

第一阶段:版本协商以及tcp三次握手

第二阶段:秘钥和算法协商阶段

​                  服务端发送公钥文件,客户端主机无条件确认公钥(服务端确认客户端身份--内网)

​                  内部通过DH交换算法协商对称算法

第三阶段:认证阶段(客户端验证服务端)

通过用户名和密码验证

通过用户名和公钥验证(更安全)

 第四阶段:会话链接传输阶段

2、对ssh服务端的配置

【注】ssh服务安装包openssh-server

[root@server1 ~]# vim /etc/ssh/sshd_config   --- 配置ssh文件

17.Port 22  #监听端口,默认监听22端口 【默认可修改】

18.AddressFamily any #IPV4和IPV6协议家族用哪个,any表示二者均有

19.ListenAddress 0.0.0.0 #指明监控的地址,0.0.0.0表示本机的所有地址 【默认可修改】

20.ListenAddress :: #指明监听的IPV6的所有地址格式

48.LoginGraceTime 2m #登录的宽限时间,默认2分钟没有输入密码,则自动断开连接

49.PermitRootLogin yes #是否允许管理员远程登录,'yes'表示允许

51.MaxAuthTries 6 #最大认证尝试次数,最多可以尝试6次输入密码。之后需要等待某段时间后才能再次输入密码

52.MaxSessions 10 #允许的最大会话数

59.AuthorizedKeysFile .ssh/authorized_keys #选择基于密钥验证时,客户端生成一对公私钥之后,会将公钥放到.ssh/authorizd_keys里面

79.PasswordAuthentication no #是否允许支持基于口令的认证

129.UseDNS no #是否反解DNS,如果想让客户端连接服务器端快一些,这个可以改为no

146.Subsystem sftp /usr/libexec/openssh/sftp-server #支持 SFTP ,如果注释掉,则不支持sftp连接

154.AllowUsers user1 user2 #登录白名单(默认没有这个配置,需要自己手动添加),允许远程登录的用户。如果名单中没有的用户,则提示拒绝登录

3、实验配置

实验1:修改ssh服务的端口号

[root@server1 ~]# vim /etc/ssh/sshd_config 

Port 2222

[root@server1 ~] systemctl disable firewalld

[root@server1 ~] setenforce  0   ---  用于临时关闭 SELinux

[root@server1 ~] getenforce   --- 查看 SELinux当前执行模式
Permissive    --- 当前SELinux是宽松模式,可以进行一些违规操作

[root@server1 ~] systemctl restart sshd

实验2:拒绝root用户远程登陆  

#请保持服务器上至少有一个可以远程登陆的普通远程账号

[root@server1 ~]# vim /etc/ssh/sshd_config 

PermitRootLogin no

#重启服务后生效,使用时使用普通用户进行登陆,需要使用root用户时再切换

实验3:允许特定用户ssh登陆,其他用户都无法登陆  

[root@server1 ~]# vim /etc/ssh/sshd_config 

AllowUsers USERNAME
#USERNAME为你允许登陆的账号【需要在系统中useradd该账号】
#如果是多个用户,中间用空格隔开

#重启ssh服务后生效

实验四:公钥验证,免密登录

服务器地址: 192.168.146.129

一、Linux -- Linux:

客户端地址:192.168.146.131

1、生成非对称密钥:[root@localhost ~]# ssh-keygen -t rsa --- 用rsa算法生成密钥

ssh远程登录_第1张图片

密钥已成功生成

2、将当前主机的.ssh/id_rsa.pub文件发送到129主机的/.ssh/authorized_keys:

 ssh-copy-id 192.168.146.129

3、确定发起ssh连接不需要任何验证: ssh 192.168.146.129

ssh远程登录_第2张图片

二、Windows -- Linux:

注释:使用Xshell和Xftp实现

1、打开Xshell如图选择新建用户密钥生成向导

ssh远程登录_第3张图片

2、一直下一步

3、密钥名称任意,因为做免密,所以不设置密码

ssh远程登录_第4张图片

4、选择保存本地(能找到即可)

ssh远程登录_第5张图片

生成如图文件:

ssh远程登录_第6张图片

5、打开Xftp

将需要设置免密的服务器和Windows主机连接

如图将之前生成的server.pub发送到Linux的/root/.ssh目录下

ssh远程登录_第7张图片

再如下改名:[root@server ~]# mv .ssh/server.pub   .ssh/authorized_keys

最后就可以在登录root时选择公钥验证了

你可能感兴趣的:(RHCE,ssh,网络,服务器)