ssh远程登录

发布时间:2024年01月12日

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算法生成密钥

密钥已成功生成

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

?ssh-copy-id 192.168.146.129

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

二、Windows -- Linux:

注释:使用Xshell和Xftp实现

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

2、一直下一步

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

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

生成如图文件:

5、打开Xftp

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

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

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

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

文章来源:https://blog.csdn.net/m0_74618370/article/details/135549193
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。