1、有哪些可提供远程登录的类型
目前远程登录主要分为文字接口和图形接口。
- 文字接口明文传输:Telnet、RSH 等为主。
- 文字接口加密:SSH 为主,基本已经取代 Telnet、RSH 。
- 图形接口:XDMCP、VNC、XRDP 等较为常见。
数据的明文传输和加密传输
明文传输:指的是网络高手用tcpdump等工具获取传输的数据包以后,可以直接看到传输的内容。
加密传输:指的是数据在传输之前进行加密处理,如果有人获取数据包,那么他看到的是加密后的乱码。
2、使用SSH服务
现在的服务器默认ssh服务是开启的,所以我们可以直接使用。特别注意的是:在默认状态下,ssh协议本身就提供两个服务器功能。
- 一个就是类似Telnet的远程连接使用Shell的服务器,也就是SSH
- 另一个就是类似FTP服务的Sftp-Server,提供更安全的FTP服务。
1、重启ssh服务:
[root@192 ~]# systemctl restart sshd
[root@192 ~]# netstat -anpt | grep ssh
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1175/sshd
tcp 0 0 192.168.91.159:22 192.168.91.1:50906 ESTABLISHED 1146/sshd: root@pts
tcp6 0 0 :::22 :::* LISTEN 1175/sshd
[root@192 ~]#
2、使用ssh登录服务器
[root@www ~]# ssh [-f] [-o 参数项目] [-p 非正规埠口] [账号@]IP [指令]
选项与参数:
-f :需要配合后面的 [指令] ,不登入远程主机直接发送一个指令过去而已;
-o 参数项目:主要的参数项目有:ConnectTimeout=秒数 :联机等待的秒数,减少等待的时间
StrictHostKeyChecking=[yes|no|ask]:预设是 ask,若要让 public key 主动加入 known_hosts ,则可以设定为 no 即可。
-p :如果你的 sshd 服务启动在非正规的埠口 (22),需使用此项目;
[指令] :不登入远程主机,直接发送指令过去。但与 -f 意义不太相同。
# 1. 直接联机登入到对方主机的方法 (以登入本机为例):
[root@www ~]# ssh 127.0.0.1
The authenticity of host '127.0.0.1 (127.0.0.1)' can't be established.
RSA key fingerprint is
eb:12:07:84:b9:3b:3f:e4:ad:ba:f1:85:41:fc:18:3b.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '127.0.0.1' (RSA) to the list of known hosts.
root@127.0.0.1's password: <==在这里输入 root 的密码即可!
Last login: Mon Jul 25 11:36:06 2011 from 192.168.1.101
[root@www ~]# exit <==离开这次的 ssh 联机
# 由于 ssh 后面没有加上账号,因此预设使用当前的账号来登入远程服务器
一般使用SSH应该采用“SSH登录的账号@ip”,但是当远程登录的用户和我们正在使用的用户是同一个名称,就可以直接ssh ip
。
3、登录时为什么输入yes
当你第一次登录某台服务器时,他会问你是否要去连接?
- yes:他会把你要登录的这台服务的指纹码(公钥)写入本机的
~/.ssh/known_hosts
文件下面。然后让你输入密码,之后可以进入文字接口。 - no:直接退出。
这很烦,我不想输入或者说我用脚本执行,你让我去输入yes? 这时ssh -o 参数 会帮你解决这个问题。
[root@www ~]# ssh -o StrictHostKeyChecking=no root@localhost
Warning: Permanently added 'localhost' (RSA) to the list of known hosts.
root@localhost's password:
# 如上所示,不会问你 yes 或 no 啦!直接会写入 ~/.ssh/known_hosts 当
中!
我能不能在这台服务上,给另外一台下指令,然后把结果返回来给我看到。
[root@192 ~]# ssh 192.168.91.159 date
root@192.168.91.159's password:
2022年 01月 09日 星期日 16:42:29 CST
[root@192 ~]#
我想让给另一台服务器下指令,不用给我返回结果
[root@www ~]# ssh -f student@192.168.91.159 find / &> ~/find1.log
# 此时你会立刻注销 192.168.91.159 ,但 find 指令会自己在远程服务器跑喔!
4、ssh ip 无法登录
这个情况有多种,我曾经遇到多两种。
- 提示信息,22端口破裂或者22端口被拒绝,但是可以ping通。这种情况下,可能就是地址被占用。查一下你的子网掩码时候正确。
- 如果服务器换ip了,那么你要重新登录时就会发生这种情况。
第二种情况做一些原因说明:
第一次ssh ip 远程登录时,主机会把远程服务器的指纹码写入~/.ssh/known_hosts
下,等你更换ip以后再次登录,主机核对指纹码不对,就会感觉是恶意主机,从而拒绝登录。
解决办法:
- 编辑 ~/.ssh/known_hosts 文件,找到这条记录并删除。(建议使用)
3、ssh用到的连接加密技术介绍
目前常见的网络数据包加密技术通常是“非对称秘钥加密技术”。对称加密技术和非对称加密技术主要的区别是:是否使用同一把钥匙。
非对称秘钥加密技术:主要是通过两把不一样钥匙即公钥与私钥来进行加密和解密的工程。由于这两把钥匙的作用是加密数据和解密数据用的,所以在同一方向的连接中,这两把钥匙是成对的,每台服务器产生的公钥与私钥并不相同。
- 公钥(Public Key):提供给远程主机进行数据加密的行为,也就是说,公钥谁想要我就给谁,但是你们给我发消息必须要我的公钥加密。
- 私钥(Private Key):远程主机使用你的公钥加密的数据,在本地端就能够使用私钥来进行解密。由于私钥很重要,因此私钥是不能够外流的,只能保护在自己的主机上。
加密过程
-
服务器建立公钥档: 每一次启动 sshd 服务时,该服务会主动去找 /etc/ssh/ssh_host*
的档案,若系统刚刚安装完成时,由于没有这些公钥档案, 因此 sshd 会主动去计算出这些需要的公钥档案,同时也会计算出服务器自己需
要的私钥档; -
客户端主动联机要求: 若客户端想要联机到 ssh 服务器,则需要使用适当
的客户端程序来联机,包括 ssh, pietty 等客户端程序; - 服务器传送公钥档给客户端: 接收到客户端的要求后,服务器便将第一个
步骤取得的公钥档案传送给客户端使用 (此时应是明码传送,反正公钥本来就是
给大家使用的!); -
客户端记录/比对服务器的公钥数据及随机计算自己的公私钥:若客户端第
一次连接到此服务器,则会将服务器的公钥数据记录到客户端的用户家目录内的
~/.ssh/known_hosts 。若是已经记录过该服务器的公钥数据,则客户端会去比
对此次接收到的与之前的记录是否有差异。若接受此公钥数据, 则开始计算客
户端自己的公私钥数据; -
回传客户端的公钥数据到服务器端: 用户将自己的公钥传送给服务器。此
时服务器:『具有服务器的私钥与客户端的公钥』,而客户端则是: 『具有服
务器的公钥以及客户端自己的私钥』,你会看到,在此次联机的服务器与客户端
的密钥系统 (公钥+私钥) 并不一样,所以才称为非对称式密钥系统喔。 -
开始双向加解密: (1)服务器到客户端:服务器传送数据时,拿用户的公钥
加密后送出。客户端接收后,用自己的私钥解密; (2)客户端到服务器:客户端
传送数据时,拿服务器的公钥加密后送出。服务器接收后,用服务器的私钥解密。
4、开启telnet
node-2做升级,node-1可以登录node-2
1、先做Telnet登录,防止升级失败
node-2 安装telnet服务
yum -y install xinetd telnet-server
telnet-server是由xinetd管理,需要安装xinetd,这里启动的是telnet.socket而不是telnet.service。默认情况下,PAM 模块限制root不能telnet到 telnet-server,如果telnet 时报 Login incorrect 时,可以把下面的文件进行注释掉;
2、启动服务
systemctl enable xinetd.server
systemctl enable telnet.socket
systemctl start telnet.socket
systemctl start xinetd.service
3、测试
[root@192 ~]# telnet 192.168.91.183
Trying 192.168.91.183...
Connected to 192.168.91.183.
Escape character is '^]'.
Kernel 3.10.0-1160.el7.x86_64 on an x86_64
192 login: root
Password:
Login incorrect
192 login: jiaofan
Password:
Last login: Sun Jan 9 17:35:30 from 192.168.91.159
[jiaofan@192 ~]$ sudo sh
[sudo] jiaofan 的密码:
sh-4.2# bash
[root@192 jiaofan]#