Linux下的远程登录方式:Secure Shell

ssh简介

Secure Shell(安全外壳协议,简称SSH)是一种加密的网络传输协议,可在不安全的网络中为网络服务提供安全的传输环境。SSH通过在网络中创建安全隧道来实现SSH客户端与服务器之间的连接。虽然任何网络服务都可以通过SSH实现安全传输,SSH最常见的用途是远程登录系统,人们通常利用SSH来传输命令行界面和远程执行命令。SSH使用频率最高的场合是类Unix系统,但是Windows操作系统也能有限度地使用SSH。

SSH以非对称加密实现身份验证。身份验证有多种途径,例如:其中一种方法是使用自动生成的公钥-私钥对来简单地加密网络连接,随后使用密码认证进行登录另一种方法是人工生成一对公钥和私钥,通过生成的密钥进行认证,这样就可以在不输入密码的情况下登录。任何人都可以自行生成密钥。公钥需要放在待访问的电脑之中,而对应的私钥需要由用户自行保管。认证过程基于生成出来的私钥,但整个认证过程中私钥本身不会传输到网络中。

SSH协议有两个主要版本,分别是SSH-1和SSH-2。无论是哪个版本,核实未知密钥来源都是重要的事情,因为SSH只验证提供用户是否拥有与公钥相匹配的私钥,只要接受公钥而且密钥匹配服务器就会授予许可。这样的话,一旦接受了恶意攻击者的公钥,那么系统也会把攻击者视为合法用户。

应用

SSH的经典用途是登录到远程电脑中执行命令。除此之外,SSH也支持隧道协议、端口映射和X11连接。借助SFTP或SCP协议,SSH还可以传输文件。

SSH使用客户端-服务器模型,标准端口为22。服务器端需要开启SSH守护进程以便接受远端的连接,而用户需要使用SSH客户端与其创建连接。

大多数现代操作系统(包括macOS、大部分Linux、OpenBSD、FreeBSD、Solaris等系统)都提供了SSH,包括Windows系统也提供SSH程序(在Windows 10 1809版本之后)。

SSH的安全验证

在客户端来看,SSH提供两种级别的安全验证。

第一种级别(基于密码的安全验证),知道帐号和密码,就可以登录到远程主机,并且所有传输的数据都会被加密。但是,可能会有别的服务器在冒充真正的服务器,无法避免被“中间人”攻击。

第二种级别(基于密钥的安全验证),需要依靠密钥,也就是你必须为自己创建一对密钥,并把公有密钥放在需要访问的服务器上。客户端软件会向服务器发出请求,请求用你的密钥进行安全验证。服务器收到请求之后,先在你在该服务器的用户根目录下寻找你的公有密钥,然后把它和你发送过来的公有密钥进行比较。如果两个密钥一致,服务器就用公有密钥加密“质询”(challenge)并把它发送给客户端软件。从而避免被“中间人”攻击。

配置文件说明

首先我们要知道,在linux中,sshd服务是默认开启的,也就是开机自启动,端口号为22,默认允许所有人的远程登录。

sshd服务的配置信息保存在/etc/ssh/sshd_config文件中,也就是ssh的主配置文件,以下是其中主要配置。

Port 22	默认的sshd服务端口
ListenAddress 0.0.0.0	设定sshd服务器监听的IP地址
Protocol 2	SSH协议的版本号
HostKey /etc/ssh/ssh_host_key	SSH协议版本为1时,DES私钥存放的位置
HostKey /etc/ssh/ssh_host_rsa_key	SSH协议版本为2时,RSA私钥存放的位置
HostKey /etc/ssh/ssh_host_dsa_key	SSH协议版本为2时,DSA私钥存放的位置
PermitRootLogin yes	设定是否允许root管理员直接登录(为了安全考虑,可以禁用)
StrictModes yes	当远程用户的私钥改变时直接拒绝连接
MaxAuthTries 6	最大密码尝试次数
MaxSessions 10	最大终端数
PasswordAuthentication yes	是否允许密码验证
PermitEmptyPasswords no	是否允许空密码登录(很不安全)

因为其中一些重要配置项被#号注释掉了,过滤不出来,所以就列出来了。

远程登录方式

刚才也说了,ssh有两种认证方式:密码认证和密钥对认证。

密码验证

首先来说说密码验证,远程登录请求时将自动生成的密钥对保存在本地,然后通过linux中已有用户登录。通常情况下,为了安全考虑,会将端口号更改。

在RHEL7中,已经默认安装并启用了sshd服务程序。在linux中远程登录格式为:ssh 【选项】 主机IP

[root@linus ~]# ssh 192.168.1.124
The authenticity of host '192.168.1.124 (192.168.1.124)' can't be established.
ECDSA key fingerprint is SHA256:UPiyXj1RamlkIMDY4KO4mzUtR8cm8mCzL6b5E1YIEAY.
ECDSA key fingerprint is MD5:f2:2c:7f:88:a0:e3:1e:1c:36:aa:f7:fc:bd:76:a1:eb.
Are you sure you want to continue connecting (yes/no)? yes	#确认
Warning: Permanently added '192.168.1.124' (ECDSA) to the list of known hosts.
root@192.168.1.124's password: 		#对面主机root密码,推荐禁用root用户登录
Last login: Fri Mar 27 02:26:33 2020 from 192.168.1.11
[root@linus ~]# exit
登出
Connection to 192.168.1.124 closed.

在windows中登录就很简单了,直接使用终端控制工具,例如Xshell,直接输入IP地址即可登录。

安全密钥验证

1.在客户端中生成密钥对

[root@linus ~]# 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:
SHA256:77piQNn4qxSlD5ALYfPO6dY83axnyL4FrTSuQARRmEc root@linus.linux
The key's randomart image is:
+---[RSA 2048]----+
|.=*E             |
|.++o             |
|. +o +.          |
| .+o=o. .        |
|  .*+. +S.       |
|  o ++= *.       |
|   +.=o=.+.      |
|  ... *oo+       |
|    .+.=*o.      |
+----[SHA256]-----+

2.把客户端中的公钥文件传送至远程主机

[root@linus ~]# ssh-copy-id 192.168.1.124
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
/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.1.124's password: 			#输入远程服务器root密码

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh '192.168.1.124'"
and check to make sure that only the key(s) you wanted were added.

3.对服务器进行设置,使其只允许密钥验证,拒绝口令验证

[root@linus ~]# vim /etc/ssh/sshd_config 
PasswordAuthentication no		#此项被注释掉了,可以自己写入或取消注释

4.在客户端尝试登陆服务器,此时的密码就是你在生成密钥对时设置的密码,若未设置,则可以直接登陆

[root@linus ~]# ssh 192.168.1.124
Enter passphrase for key '/root/.ssh/id_rsa': 
Last login: Fri Mar 27 02:34:35 2020 from 192.168.1.125

对于安全方面来说,第二种方式更加安全,免密码登录的方式在运维时非常方便,而且也具有安全性,简直不要太舒服。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

虚伪的空想家

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值