为什么需要远程到Linux系统呢?远程到Linux系统是在机房管理中最经常使用了,因为Linux服务器一般都是在机房的机柜中,可能会配有KVM作为本地连接,但是日常维护服务器每修改一个参数都要跑到相应的服务器前使用KVM连接,一方面效率低,而且长时间在机房里对自身的健康都有一定的影响。所以日常维护的时候就使用远程的方式登录linux系统啦。一般登录的方式有Telnet,SSH,VNC等。
1.telnet服务
Telnet是网络中远程登录服务的标准协议和主要方式。它为用户提供了在本地计算机上完成远程主机工作的能力。在终端使用者的电脑上使用telnet程序,用它连接到服务器,就像直接在服务器的控制台上输入一样,可以在本地就能控制服务器。虽然Telnet较为简单实用也很方便,但是在格外注重安全的现代网络技术中,Telnet并不被重用。原因在于Telnet是一个明文传送协议,它将用户的所有内容,包括用户名和密码都明文在互联网上传送,具有一定的安全隐患,因此许多服务器都会选择禁用Telnet服务。RHEL7上也是默认没有安装Telnet服务的,telnet对应的服务名称是xinetd。
1.1安装服务
安装xinetd服务和telnet-server服务。
[root@shijie Desktop]# yum install xinetd telnet-server -y
以下省略...
1.2重启服务
[root@shijie Desktop]# systemctl start telnet.socket
[root@shijie Desktop]# systemctl start xinetd
[root@shijie Desktop]# systemctl enable telnet.socket
ln -s '/usr/lib/systemd/system/telnet.socket' '/etc/systemd/system/sockets.target.wants/telnet.socket'
[root@shijie Desktop]# systemctl enable xinetd
1.3客户端访问
linux客户端,安装telnet客户端,默认情况下telnet不能远程root用户,安全性考虑也不建议直接telnet到root下。
[root@shijie2 Desktop]# yum install telnet
[root@shijie2 Desktop]# telnet 192.168.10.10
Trying 192.168.10.10...
Connected to 192.168.10.10.
Escape character is '^]'.
Kernel 3.10.0-123.el7.x86_64 on an x86_64
shijie login: shijie
Password:
Last login: Tue May 26 13:14:48 from ::ffff:192.168.10.30
[shijie@shijie ~]$
windows客户端,可以先安装telnet客户端,也可以使用SecureCRT,xshell,putty等工具。我使用SecureCRT为例。
点击快速连接
协议选择telnet,输入远程的IP地址,端口号默认23。
点击连接后输入需要连接的非root用户。
2.SSH
SSH 是较可靠,专为远程登录会话和其他网络服务提供安全性的协议。相对对telnet来说,SSH传输过程都是加密的,可以有效防止远程管理过程中的信息泄露问题。RHEL7上SSH协议是默认开启的,只要有客户端就可以直接SSH远程到服务器。
2.1客户端远程
linux客户端上,使用ssh ip登录可以直接登录到服务器的root用户,使用ssh 用户名@ip可以登录到指定用户。
[root@shijie2 Desktop]# ssh 192.168.10.10
root@192.168.10.10's password:
Last login: Wed May 27 07:11:43 2020 from 192.168.10.20
[root@shijie ~]#
windows客户端SSH登录使用SecureCRT为例,选择快速连接。
协议选择SSH2,输入需要远程的IP,端口默认22,输入需要远程的用户名。
输入用户的密码
点击确定之后就可以进入远程的服务器了。
2.2SSH免密登录
在客户端上生成秘钥对
[root@shijie2 Desktop]# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 输入需要保存的路径
Enter passphrase (empty for no passphrase): 输入密钥对的密码
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
9e:6a:24:a6:2d:a8:8e:e7:41:2a:ca:76:54:1e:9e:a5 root@shijie2
The key's randomart image is:
+--[ RSA 2048]----+
| |
| |
| |
| o . |
| . + = S |
| o .oE.. . |
|o.o+ o o |
|*.+o. .. |
|B=o. .. |
+-----------------+
将生成的秘钥对复制到服务器上。
[root@shijie2 Desktop]# ssh-copy-id 192.168.10.10
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
root@192.168.10.10's password:
Number of key(s) added: 1
Now try logging into the machine, with: "ssh '192.168.10.10'"
and check to make sure that only the key(s) you wanted were added.
服务器上修改配置文件,将PasswordAuthentication参数改为no。
[root@shijie ~]# vim /etc/ssh/sshd_config
以上省略...
76 #PasswordAuthentication yes
77 #PermitEmptyPasswords no
78 PasswordAuthentication no
以下省略...
[root@shijie ~]# systemctl restart sshd
再次尝试在客户端中登录服务器,就不需要密码登录了。
[root@shijie2 Desktop]# ssh 192.168.10.10
Last login: Wed May 27 08:16:53 2020 from 192.168.10.20
[root@shijie ~]#
这样修改其他客户端就无法使用用户名密码登录了,可以单独将PasswordAuthentication参数前面的#号去掉,这样既可以使用免密登录,又可以使用用户名密码登录了。
2.3SSH自定义安全设置
a.修改默认端口,使用ssh ip -p 端口号登录。
13 # If you want to change the port on a SELinux system, you have to tell
14 # SELinux about this change.
15 # semanage port -a -t ssh_port_t -p tcp #PORTNUMBER
16 #
17 Port 2222
18 #AddressFamily any
b.限制客户端登录IP,这样只有允许的IP才能登录了。
[root@shijie ~]# vim /etc/hosts.allow
sshd:192.168.10.20,192.168.20.*:allow
sshd:all:deny
c.如果服务器存在多个ip,只允许从指定ip登录,修改配置文件ListenAddress参数。
[root@shijie ~]# vim /etc/ssh/sshd_config
ListenAddress 192.168.10.10 默认0.0.0.0
3.VNCserver
VNC是远程管理工具,可以在客户端使用界面化远程管理服务器。服务器安装VNCserveer。
[root@shijie Desktop]# yum install vnc-server -y
编辑VNC配置文件,旧版本配置文件在/etc/sysconfig/vncservers。现在更换位置到 /lib/systemd/system/vncserver@.service,要配置文件就先复制在@后面加上冒号数字代表几号窗口,例vncserver@:2.service。将
部分修改成需要登录的用户名。
[root@shijie Desktop]# cd /lib/systemd/system/
[root@shijie system]# cp vncserver@.service vncserver@:2.service
[root@shijie system]# vim vncserver@:2.service
[Unit]
Description=Remote desktop service (VNC)
After=syslog.target network.target
[Service]
Type=forking
# Clean any existing files in /tmp/.X11-unix environment
ExecStartPre=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'
# ExecStart=/sbin/runuser -l <USER> -c "/usr/bin/vncserver %i"
# PIDFile=/home/<USER>/.vnc/%H%i.pid
ExecStart=/sbin/runuser -l root -c "/usr/bin/vncserver %i"
PIDFile=/home/root/.vnc/%H%i.pid
ExecStop=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'
[Install]
WantedBy=multi-user.target
设置VNC远程连接的密码。
[root@shijie system]# vncpasswd
Password:
Verify:
开启VNC服务
[root@shijie system]# vncserver :2
客户端访问,先安装vncviewer。
[root@shijie2 Desktop]# yum install -y vnc
[root@shijie2 Desktop]# vncviewer 192.168.10.10:2