SSH是什么,为什么Linux需要SSH?

1.9k 词

Hello 大家好!我是在2024年依然对这个荒诞的世界抱有热情的超级神奇的神奇君!

在前面的Linux基础教程中,神奇君为大家简单介绍了Linux的安装、Bash Shell的基本使用等,而在Linux众多的工具中,SSH可谓是最常用也是最重要的工具。

SSH是什么呢?百科上对SSH的介绍是这样的:

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

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

以上的解释可能有些略专业,SSH呢说白了就是一种C/S架构的工具,在服务器中安装了SSH的Server端之后,服务器会开启一个端口(默认是22端口),客户端连接服务器的22端口,可以通过用户的密码或者密钥(key),远程登录到这台服务器,开启一个远程的shell用来执行命令。不过这个shell可不止能够执行命令,还能够传输文件、转发端口等等,功能很多。

那么今天就来讲讲,如何在Debian服务器上安装和配置SSH服务端,以及如何使用SSH登录到一台远程Linux服务器,最后说说如何通过SSH传输文件到服务器。

安装SSH,启动SSH服务

首先,关于SSH服务的安装,在Debian上,只需要执行

1
sudo apt-get install ssh

就可以了

安装完成之后,执行

1
sudo service ssh start

启动ssh服务,这时候如果执行ssh root@localhost,输入密码,就可以登录本机的shell:

这里我们直接以root用户登录,输入了正确的密码,仍然提示无法登录,这是因为我们没有允许root用户登录,我们切换成demo用户登录,就能登录了:

远程登录SSH

那么要如何远程登录这台机器呢?例如这台机器的IP是10.0.2.15,那么可以在其他机器上运行:ssh demo@10.0.2.15,输入密码,即可登录到这台机器。

在Windows上使用SSH

除了在Linux上使用SSH,我们还可以在Windows上使用SSH连接到远程的SSH服务器。通常有两种方法。Windows10以上的操作系统中,系统是默认带有SSH客户端工具的,只需要打开CMD,输入SSH user@host 即可连接到远程的Linux服务器中。

除此以外,我们还可以用一些可视化的工具,例如putty、WinSCP、XShell等可视化工具,来连接到远程的Linux的SSH上。

通过SSH传输文件

讲完了如何登录SSH,再来介绍下如何通过SSH传输文件。例如,我们有个1.txt,想要传输到IP地址是10.0.2.15的远程服务器上的/tmp目录,只需要运行:

1
scp 1.txt [email protected]:/tmp/

即可

类似的,如果想要将远程服务器/tmp目录中的1.txt文件传回来,并且保存成2.txt,只需要运行

1
scp [email protected]:/tmp/1.txt ./2.txt 

即可

以上就是关于通过SSH传文件的方法啦。

为什么Linux需要SSH?

说了这么多,最后总结下,为什么Linux需要SSH这个工具呢?因为对于这个世界上的大多数服务器来说,我们都是无法时时刻刻站在它的面前用控制台来操控这些机器的,所以我们很多时候都需要远程来执行运维操作。比如某台机器在国外甚至在太空,我们都可以在任何一个网络可以到达的地方,通过ssh远程连接过去,执行一些操作。对于远程运维一台服务器来说,最重要的就是安全,所以光是有远程shell还不够,还需要确保安全,这就是安全的shell(secure shell)的由来。通过加密、双向验证等方式,在确保安全的前提下,让用户可以远程维护服务器。