Linux ssh远程登录
1、ssh概念
ssh:一种安全通道协议
功能:1.实现字符界面远程登录
2.远程复制
3.ssh协议是对通信对方的数据传输进行加密出来,包括用户口令(安全性)
4.客户端22端口,服务器端口22
1.1SSH的优点
- 安全性: 数据传输是加密的,可以防止信息泄漏。
- 身份验证:防止未经授权的用户访问远程系统。
- 远程管理:可通过SSH协议登录远程服务器并执行命令,无需直接物理访问设备。
- 端口转发:SSH支持 端口转发功能,可以安全地传输其他协议和应用程序。
- 传输速度: 数据传输是压缩的,可以提高传输速度。
- SSH具有强大的安全性、身份验证和远程管理功能,使得它成为远程访问和管理计算机系统的首选协议。
1.2配置文件
ssh配置文件在/etc/ssh
客户端配置文件/etc/ssh_config
服务器配置文件/etc/sshd_config
1.3ssh组成结构
1.传输层协议(ssh-trans)
(1)服务器认证,保密性以及完整性,压缩功能
(2)一般运行在tcp/ip连接上,也可以用在其他可靠流
(3)ssh-trans提供加密技术,密码主机认证,数据完整性保护,数据压缩
(4)密码主机认证,基于主机,不能进行用户认证
2.用户认证协议(ssh_userauth)
(1)向服务器提供客户端用户鉴别功能
(2)运行在ssh_trans之上
(3)开始执行用户认证,从底层协议接受会话标识,认证私钥所有权
(boot --认证用户是否存在--输入密码--认证密码是否相符--登录成功)
3.连接协议(ssh_connect)
(1)多个加密隧道分为逻辑通道
(2)运行在用户认证上,提供交互式登录会话,远程命令执行,转发tcp/ip连接
2、SSH原理
- 客户端发起链接请求
- 服务端返回自己的公钥,以及一个会话ID(这一步客户端得到服务端公钥)
- 客户端生成密钥对
- 客户端用自己的公钥异或会话ID,计算出一个值Res,并用服务端的公钥加密
- 客户端发送加密值到服务端,服务端用私钥解密,得到Res
- 服务端用解密后的值Res异或会话ID,计算出客户端的公钥(这一步服务端得到客户端公钥)
- 最终:双方各自持有三个秘钥,分别为自己的一对公、私钥,以及对方的公钥,之后的所有通讯都会被加密
3、SSH登录方式
3.1登录 方法一:
ssh [远程主机用户名]@[远程服务器主机名或IP地址] -p port
命令 端口号
[root@localhost ~]#ssh root@192.168.190.254
#默认使用22端口 root(登录对方的用户)加IP 地址,首次登录会询问,并要求输入密码
3.2登录方法二
ssh -l [远程主机用户名] [远程服务器主机名或IP 地址] -p port
-l :-l 选项,指定登录名称。
-p: -p 选项,指定登录端口(当服务端的端口非默认时,需要使用-p 指定端口进行登录)
3.3 方式三:跳板连接
跳板连接用于在不直接暴露目标主机的情况下进行安全访问。
通过跳板连接,用户可以首先连接到中间设备,然后再通过中间设备连接到目标主机。
中间设备不一定是跳板机,只需要安装ssh服务就可以。
3.3.1跳板连接使用场景
远程服务器管理:跳板连接常用于管理和控制远程服务器。通过跳板机,可以安全地登录和执行命令,而无需直接暴露目标服务器的访问端口。
内部网络隔离:跳板连接可用于将外部网络和内部网络隔离,提供一个安全的访问通道,外部用户必须通过身份验证和授权才能访问内部网络资源。
多层级安全访问:通过跳板机,可以从一个层级跳转到另一个层级,确保访问的安全性和可管理性。
SSH端口转发:跳板连接还可以用于SSH端口转发,提供访问内部受限资源的能力。
3.3.2具体应用
#本机地址为192.168.192.254
iptables -A INPUT -s 192.168.190.100 -j REJECT #拒绝来自此IP的所有访问
- 方式一
ssh -t 192.168.190.200 ssh -t 192.168.190.254 //把192.168.190.200作为跳板机
- 方式二
ssh -J IP1,IP2... 目标IP
#IP1 IP2为中间设备的IP地址
#举例
ssh -J 192.168.190.200 192.168.190.254
4、服务端配置
[root@localhost ~]# vim /etc/ssh/sshd_config //服务端配置
#生产建议修改自己默认的端口
#修改后 远程连接需要加 -p选项
ssh 192.168.190.100 -p 9527 //不加P会莫认使用原端口
LoginGraceTime 2m
#用来设定如果用户登录失败,在切断连接前服务器需要等待的时间,单位为秒
PermitRootLogin yes
#默认 ubuntu不允许root远程ssh登录
StrictModes yes
#检查.ssh/文件的所有者,权限等
MaxAuthTries
#用来设置最大失败尝试登陆次数为6
MaxSessions 10
#同一个连接最大会话
PubkeyAuthentication yes
#基于key验证
PermitEmptyPasswords no
#密码验证当然是需要的!所以这里写 yes,也可以设置为 no,在真实的生产服务器上,根据不同安全级别要求,有的是设置不需要密码登陆的,通过认证的秘钥来登陆。
5、免密登录
正常情况下访问别的主机需要输入密码才能连接
在客户端生成密钥文件 ssh-keygen
最后会生成两个文件
cd /root/.ssh
ls
.pub为密钥文件
ssh-copy-id -i id_rsa.pub 192.168.190.200
#复制公钥文件
root@192.168.190.200's password: //输入密码确认执行命令
Number of key(s) added: 1 //拷贝成功