1、什么是远程连接服务器
远程连接服务器通过文字或图形接口方式来远程登录系统,让你在远程终端前登录
linux 主机以取得可操作主机接口(shell),而登录后的操作感觉就像是坐在系统前
面一样。
2、远程连接服务器的功能
分享主机的运算能力
服务器类型:有限度开放连接
工作站类型:只对内网开放
3、远程连接服务器的类型(以登录的连接界面来分类)
文字接口
明文传输:Telnet、RSH 等,目前非常少用
加密传输:SSH 为主,已经取代明文传输
图形接口:XDMCP、VNC、XRDP 等
4、文字接口连接服务器
SSH(Secure Shell Protocol,安全的壳程序协议)它可以通过数据包加密技术将等
待传输的数据包加密后再传输到网络上。ssh 协议本身提供两个服务器功能:一个是
类似 telnet 的远程连接使用 shell 的服务器;另一个就是类似 ftp 服务的 sftp- server,
提供更安全的 ftp 服务。
1,对称加密:使用同一个秘钥进行加密解密
缺点:不够稳定
优点:效率高
2,非对称加密;使用不同的秘钥进行加密解密
非对称加密:产生一对密钥:公钥(给别人)和私钥(给自己)
用公钥加密的只能用私钥解密
3,两种加密方式存在的问题
对称加密的问题: 如何保证密钥的安全
非对称加密的问题:如何确保服务器的身份
ssh服务使用对称加密来传输数据,使用非对称加密来进行连接
4,SSH 工作过程:在整个通讯过程中,为实现 SSH 的安全连接,服务端与客户端要
经历如下五个阶段:
<1>,版本号协商阶段:ssh目前包括ssh1和ssh2两个版本,双方通过版本协商确定使用的版本
Client:SSH-2.0-OpenSSH_for_Windows_8.1
server:SSH-2.0-OpenSSH_8.0
<2>,秘钥和算法协商阶段
算法协商
Client:key exchange init
Server:key exchange init
秘钥计算:
Client: key exchange init
Server: ecdh key exchange reply ,new keys, encrypted packet
秘钥协商阶段(session-key)
7 %2取余 其中的2为模数
2^3次方 2为基数
张三和李四沟通的基础: 模数:p, 基数:g
张三和李四要进行沟通了:
张三先要想好一个私钥a, 产生公钥:A = g^a mod p, 张三将公钥A交给李四
李四先想好一个私钥b, 尝试公钥: B = g^b mod p, 李四将公钥交给张三
到目前为止:张三拿到了李四的公钥B,以及自己的公钥A, 私钥a
李四拿到了张三的公钥A,以及自己的公钥B,私钥b
然后张三和李四各自根据ecdh算法进行计算:
k1 = B^a mod p
k2 = A^b mod p
如果k1=k2: 就产生了一个安全的密钥key=k1=k2
>>> p=83
>>> g=8
>>> a=9
>>> b=21
>>> A=g**a % p
>>> A
5
>>> B=g**b % p
>>> B
18
>>> k1=B**a % p
>>> k2=A**b % p
>>> k1
24
>>> k2
24
key=k1=k2=24
<3>,认证阶段(最终要阶段)
(1)基于口令的认证
第一次登录会把这些信息记录在known_hosts文件中,下次登录就会与文件中的秘钥进行对比,相同直接登录;自己认为可靠输入yes连接
Win + r 输入cmd
在客户端用户下面的.ssh目录中找known_hosts文件并删除掉
删除文件后, 再次连接,将会显示提示信息
(2)基于秘钥的认证(免密登录)
1, 打开xshell,点击工具,新建用户秘钥生成向导
点击下一步
点击下一步
2,输入并确认密码
3,将此文件保存下来备用
4,点击完成,会自动生成此秘钥
5,连接linux,创建~/.ssh/目录
6,在此目录使用命令vim authorized_keys进入到文件中,把最上面保存的秘钥添加到此文件
中,保存退出
7,新建连接
8,名称输入pubkey_login;主机输入和原来服务器相同的ip
9,在用户身份验证输入用户名root,并在方法勾选public key,在设置里选择刚才的用户秘钥,
输入密码
10,完成后将出现下面界面,点击连接
11,直接免密登录成功
第一台作为客户端
第二台作为服务器
图为秘钥的类型,可以自己选择类型
1,在Linux客户端上使用命令ssh-keygen -t rsa -b 2048生成公钥和私钥
第一台机器上(192.168.206.131);此命令为交互式命令;一直回车;-t 选择类型 -b字节大小
2,用ls -l查看文件;私钥将保存到 /root/.ssh/id_rsa ;公钥保存到 /root/.ssh/id_rsa.pub
3,在客户端(第一台)把公钥复制到服务器(第二台)下的root用户家目录的下
.ssh authorized_keys文件下面
ssh-copy-id命令知道目录在哪里,会主动把.pub文件复制到服务器的authorized_keys文件中
ssh-copy-id -i [email protected](服务器的IP) 此处需要输入密码
4,免密登录第二台机器
修改ssh服务端口号
Systemctl status sshd 查看sshd的服务状态
Ss-tnl查看tcp监听的端口号
把22端口改为2222
1,打开 sshd_config 文件
vim /etc/ssh/sshd_config
2,配置port 2222
:wq 保存退出
3,使用命令Systemctl restart sshd重新启动文件才会生效
4,使用命令Ss -tnl查看监听端口
5,此时登录要加上端口号才能登录成功:
禁止root用户远程登录
1,使用命令vim /etc/ssh/sshd_config打开配置文件
2,将PermitRootLogin yes修该为PermitRootLogin no
3,使用命令systemctl restart sshd重新启动sshd服务,
4,重新连接登录root用户
5,登录redhat 用户
6,登录成功
linux连接linux而且redhat用户的免密登录
第一台机器客户端(192.168.206.131);第二台机器服务器(192.168.206.132)
1,使用命令ssh-keygen -t rsa -b 2048在客户端,生成公钥和私钥
此时秘钥将保存到文件中,/rhce/.ssh/id_rsa (保存私钥);/rhce/.ssh/id_rsa.pub (公钥)
2,使用命令ssh-copy-id -i [email protected](服务器的IP) 把公钥复制到服务器下的root用户家目录的下.ssh authorized_keys文件下面
3,此时可以使用第一台机器的redhat用户免密登录第二台机器
windows要连接Linux: 而且要使用普通用户redhat免密登录
1.客户端生成公钥和私钥
windows -》 xshell去生成
2. 把客户端的公钥放入:用户家目录下的.ssh/authorized_keys
1,新建生成向导
2,输入秘钥名称,密码
3,将秘钥复制到文档里备用
4,进入到redhat 用户的家目录下
5,使用命令ls -al 查看有没有.ssh的目录
如果没有的话,创建一个
6,进入到此目录中
7,使用命令 vim authorized_keys进入把之前复制的公钥粘贴进去,保存退出去
8,新建连接
9,设置用户名和私钥
10,点击连接
11,免密登录成功
12,如果连接不上
使用命令tail -200 /var/log/secure查看问题在哪,一般是权限问题
修改权限
把文件的权限修改为600
把目录的权限修改为700
Linux1 免密登录 linux2 为什么没有出现这个问题?
ssh-keygen -t rsa
ssh-copy-id [email protected] -> 自动生成authorized_keys -> 600
特定用户登录,添加用户useradd user1;useradd user2 ;useradd user3;拒绝user3登录
1,切换到root用户
使用命令Vim /etc/ssh/sshd_config进入编辑
2,进入最底部使用命令AllowUser user1 user2添加特定用户(除了特定用户,其他用户无法
登录)
3,使用命令Systemctl resart sshd重启服务
4,使用命令useradd user1;useradd user2 ;useradd user3创建3个用户
5,设置密码
Echo "123456" | passwd --stdin user1
Echo "123456" | passwd --stdin user2
Echo "123456" | passwd --stdin user3
6,登录